How to implement Endless scrolling using StaggeredLayoutManager

前端 未结 4 2023
暖寄归人
暖寄归人 2021-02-07 04:49

I already tried to implement the endless scrolling for LinearLayoutManager and it is successful and tried to copy the LinearLayoutManager implementation to StaggeredGridLayoutMa

4条回答
  •  北海茫月
    2021-02-07 05:02

    I got it working:

    You can use one of two methods in the StaggeredGridLayoutManager:

    1. findFirstVisibleItemPositions(int[])
    2. findFirstCompletelyVisibleItemPositions(int[])

    Pass an empty int array that will get initialized with the positions and use the one that makes sense for you.

    private boolean loading = true;
    private int pastVisibleItems, visibleItemCount, totalItemCount;
    
    mRecyclerView.setOnScrollListener(new RecyclerView.OnScrollListener({
            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
    
            visibleItemCount = mLayoutManager.getChildCount();
            totalItemCount = mLayoutManager.getItemCount();
            int[] firstVisibleItems = null;
            firstVisibleItems = mLayoutManager.findFirstVisibleItemPositions(firstVisibleItems);
            if(firstVisibleItems != null && firstVisibleItems.length > 0) {
                pastVisibleItems = firstVisibleItems[0];
            }
    
            if (loading) {
                if ((visibleItemCount + pastVisibleItems) >= totalItemCount) {
                    loading = false;
                    Log.d("tag", "LOAD NEXT ITEM");
                }
            }
        }
    });
    

提交回复
热议问题