从Recyclerview获取所有滚动更新,而不会中断回收工作

时间:2018-07-24 11:11:34

标签: android listview android-recyclerview

在滚动方面,我需要RecyclerviewListView一样工作,以便在滚动列表时可以在屏幕上重新放置其他视图。使用ListView时,我可以设置一个OnScrollListener,只要滚动位置更新,它就会调用onScroll,当我需要根据列表的滚动位置重新定位其他视图时,此方法可以很好地工作

对于我来说,用RecyclerviewLinearLayoutManager中获得这些更新已被证明是困难的。 OnScrollListener的{​​{1}}不会在滚动位置更改时更新,而仅在当前行为更改且滚动完成时才更新。 (RecyclerViewonScrolLStateChanged)。

到目前为止,我唯一能找到的解决方案是将onScrolled包裹在RecyclerView内,并在该NestedScrollView上设置OnScrollListener。但是,这会中断回收,并且不是可行的选择,因为它会导致性能很差。

对于这个问题,我是否有其他解决方案?或者,如果我现在想实现这一目标,我是否只是坚持使用NestedScrollView

编辑:我知道ListView的{​​{1}},但仅适用于API 23或更高版本。我需要一个向下兼容API 15的版本。

1 个答案:

答案 0 :(得分:1)

使用

 recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            Log.i("testscroll", "onScrolled: ");
            super.onScrolled(recyclerView, dx, dy);
        }
    });

应该在每次滚动时通知。