NestedScrollView setOnScrollChangeListener api 21

gui*_*gui 8 android onscrolllistener android-recyclerview android-nestedscrollview

大家好,我正在尝试处理onScrolledrecyclerViewNestedScrollView.

到目前为止,我已经发现setOnScrollChangeListener,但是这个方法是 API 23,我的目标是 API 21,有什么想法可以在 API 21 中处理这个问题吗?

Nha*_*tVM 18

我认为您正在将 setOnChangeScrollListener 与 View.OnScrollChangeListener 一起使用。请像这样使用 NestedScrollView.OnScrollChangeListener :

 scvProduct.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
        @Override
        public void onScrollChange(NestedScrollView nestedScrollView,int scrollX, int scrollY, int oldScrollX, int oldScrollY) {

            Log.e("ProductFragment","position button " + topPositionButton + " scrollY " + scrollY);
            if(scrollY > oldScrollY){
                Log.e("ProductFragment","down");
            }
            else{
                Log.e("ProductFragment","up");
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

图像比较 NestedScrollview 和 View OnScrollChangeListener


gui*_*gui 3

一段时间后,我有了一个想法,我不再听滚动RecyclerView并开始听NestedScrollView onScroll事件。

我设法recyclerView使用此代码片段制作我的 loadOnDemand

    nsv_posts_timeline.setOnScrollChangeListener(
            NestedScrollView.OnScrollChangeListener {
                                _, scrollX, scrollY, _, oldScrollY ->

        if(scrollY > oldScrollY){
            val totalItens = timelineAdapter.itemCount

            val currentView = rv_timeline.findChildViewUnder(scrollX.toFloat(), scrollY.toFloat())
            val childPosition = rv_timeline.getChildAdapterPosition(currentView)

            if((totalItens/2) - (stepSize/2) <= childPosition && !isLoading){
                isLoading = true
                                          //skip , take
                timelinePresenter.loadMore(totalItens, 5)
            }
        }
    })
Run Code Online (Sandbox Code Playgroud)

isLoading是一个类属性,当我的回调从服务器返回时,我将其更改为 false