Когда я разбиваю страницы с помощью вложенной прокрутки, это занимает слишком много времени, иногда мое приложение зависает? Подскажите, пожалуйста, как правильно реализовать разбиение на страницы с вложенным прокруткой.
Как сделать разбиение на страницы с помощью NestedScrollView?
Ответы (2)
Добавьте этот класс в свой пакет
import android.content.Context;
import android.support.v4.widget.NestedScrollView;
import android.util.AttributeSet;
import android.view.View;
public class TouchDetectableScrollView extends NestedScrollView {
OnMyScrollChangeListener myScrollChangeListener;
public TouchDetectableScrollView(Context context) {
super(context);
}
public TouchDetectableScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public TouchDetectableScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
if (myScrollChangeListener!=null)
{
if (t>oldt)
{
myScrollChangeListener.onScrollDown();
}
else if (t<oldt){
myScrollChangeListener.onScrollUp();
}
View view = (View) getChildAt(getChildCount()-1);
int diff = (view.getBottom()-(getHeight()+getScrollY()));
if (diff == 0 ) {
myScrollChangeListener.onBottomReached();
}
}
}
public OnMyScrollChangeListener getMyScrollChangeListener() {
return myScrollChangeListener;
}
public void setMyScrollChangeListener(OnMyScrollChangeListener myScrollChangeListener) {
this.myScrollChangeListener = myScrollChangeListener;
}
public interface OnMyScrollChangeListener
{
public void onScrollUp();
public void onScrollDown();
public void onBottomReached();
}
}
Теперь используйте TouchDetectableScrollView
вместо NestedScrollView
в коде xml и java. и установите Listener следующим образом:
TouchDetectableScrollView nestedScrollView=findViewById(R.id.nestedScrollView);
nestedScrollView.setMyScrollChangeListener(new TouchDetectableScrollView.OnMyScrollChangeListener() {
@Override
public void onScrollUp() {
}
@Override
public void onScrollDown() {
}
@Override
public void onBottomReached() {
// api call for pagination
}
});
выполните задачу разбиения на страницы методом onBottomReached
person
Suraj Vaishnav
schedule
18.01.2018
Да, это работает, спасибо... но загрузка занимает слишком много времени.
- person Danish Farooq; 18.01.2018
Может быть проблема с интернетом, какую библиотеку вы используете для вызова API?
- person Suraj Vaishnav; 18.01.2018
Нет, это не проблема с интернетом. Я использую библиотеку Retrofil для подключения
- person Danish Farooq; 18.01.2018
ваш пользовательский вложенныйScrollview отлично работает, но не работает на вкладке ViewPager?
- person Ahsan Syed; 08.03.2021
1. Установить для вложенной прокрутки значение false для просмотра переработчика.
recyclerView.setNestedScrollingEnabled (ложь);
2. Добавьте список прокрутки во вложенную прокрутку.
nestedScrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
@Override
public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
if (isFeedsFetchInProgress)
return;
if(!mOnLastPage) {
int visibleItemCount = linearLayoutManager.getChildCount();
int totalItemCount = linearLayoutManager.getItemCount();
int pastVisibleItems = linearLayoutManager.findFirstVisibleItemPosition();
if (pastVisibleItems + visibleItemCount >= totalItemCount) {
//End of list
mPageToRequest++;
loader = LOADER.BOTTOM;
hitApiRequest(ApiConstants.REQUEST_TYPE.GET_REFERRAL_LIST);
}
}
// int topRowVerticalPosition = (recyclerView == null || recyclerView.getChildCount() == 0) ? 0 : recyclerView.getChildAt(0).getTop();
swipeRefreshLayout.setEnabled(scrollY <= 0);
}
});
person
Alok Singh
schedule
13.12.2018
RecyclerView
? - person pskink   schedule 18.01.2018