【发布时间】:2017-06-02 20:07:17
【问题描述】:
我试图实现一种布局,其中顶部有旋转木马,下面是图像的网格布局。该活动有一个 RecyclerView 并且该 RecyclerView(MainRV) 本身的项目是另一个 RecyclerView(ChildRV)。我让 MainRV 的第一个孩子使用带水平滚动的 LinearlayoutManager。第二个孩子正在使用 GridLayoutManager。 ChildRV 呈现实际项目。
问题是,我想为 MainRV 的第二个孩子(网格视图)实现延迟加载。但是,当我尝试将 onScrollListener 添加到孩子时,它不会被触发。
我尝试过的:
我尝试在 MainRV 和 ChildRV 上设置 setNestedScrollingEnabled。仍然没有触发 onScrollListener。
我在 MainRV 上实现了 onScrollListener 并尝试在滚动状态变为 IDLE 后获取第二个子项。但是当我在 gridLayoutManager 上调用 findLastVisibleItemPosition() 时,即使我在网格视图的顶部,它也会给出最后一项的位置。下面是onScrollListener的sn-p
mRecyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if(newState == RecyclerView.SCROLL_STATE_IDLE) {
RecyclerView recyclerView1 = (RecyclerView) recyclerView.getChildAt(1);
GridLayoutManager gridLayoutManager = (GridLayoutManager) recyclerView1.getLayoutManager();
Log.e("Scrolled activity pos", "" + gridLayoutManager.findLastVisibleItemPosition());
}
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
}
});
上述代码的输出给出了最后一项的位置,在我的例子中是 49。
任何帮助或建议将不胜感激。
【问题讨论】:
-
我认为原因是父recyclerview中断了从传递到子recyclerview的触摸事件。我也有同样的问题,还没解决。
标签: android android-recyclerview onscrolllistener