簡體   English   中英

NestedScrollView中的RecyclerView.addOnScrollListener

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM