[英]Android recyclerView.addOnScrollListener giving error
[英]RecyclerView.addOnScrollListener in NestedScrollView
NestedScrollView在RecyclerView中。 當此RecyclerView實例化addOnScrollListener時,偵聽器可以正常工作,但是我無法進行分頁,也無法正確跟蹤屏幕上的RecyclerView項目。 如果RecyclerView不是NestedScrollView,則一切正常
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="wrap_content">
<ImageView
android:layout_width="match_parent"
android:layout_height="100dp" />
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
我認為這與這篇文章有關 。
您應該嘗試將OnScrollChangeListener
添加到NestedScrollView。
public abstract class OnDemandRecyclerViewScrollListener implements NestedScrollView.OnScrollChangeListener {
private final RecyclerView recyclerView;
private int previousRecyclerViewHeight;
private boolean loading = true;
private int page = 1;
private boolean enabled = true;
@Dimension(unit = Dimension.PX)
private int visibleThreshold = 0;
public OnDemandRecyclerViewScrollListener(RecyclerView recyclerView) {
this.recyclerView = recyclerView;
loadNextPage(page);
}
@Override
public void onScrollChange(NestedScrollView nestedScrollView, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
if (previousRecyclerViewHeight < recyclerView.getMeasuredHeight()) {
loading = false;
page++;
previousRecyclerViewHeight = recyclerView.getMeasuredHeight();
}
if ((scrollY + visibleThreshold >= (recyclerView.getMeasuredHeight() - nestedScrollView.getMeasuredHeight())) &&
scrollY > oldScrollY && !loading && enabled) {
loading = true;
loadNextPage(page);
}
}
protected abstract void loadNextPage(int page);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.