How to create a grid view for a Recycler grid?

I created a Recycler View Grid. And I want to implement pagination. But I don't understand how to do it. I found one answer enter link here

But that doesn't work for me. I have no method mLayoutManager.findFirstVisibleItemPosition();

in my LayOutManager. And the method is mRecyclerView.setOnScrollListener

deprecated. How can I implement pagination in Grid Recycler View?

+3


source to share


2 answers


Here is the correct way to paginate with StaggeredGridLayoutManager

.

The only difference is findFirstVisibleItemPositions()

, which returns int[]

for the first visible position in each range.



mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
        super.onScrollStateChanged(recyclerView, newState);
    }

    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);
        int visibleItemCount = mGridLayoutManager.getChildCount();
        int totalItemCount = mGridLayoutManager.getItemCount();
        int[] firstVisibleItemPositions = mGridLayoutManager.findFirstVisibleItemPositions(null);

        if (!mIsLoading && !mIsLastPage) {
            if ((firstVisibleItemPositions[0] + visibleItemCount) >= totalItemCount
                && firstVisibleItemPositions[0] >= 0
                && totalItemCount >= Config.PAGE_SIZE) {
                loadMorePosts();
            }
        }
    }
});

      

-1


source


I know the answer is delayed. For others who may have encountered this, please use this solution.



mRecyclerView.addOnScrollListener(mRecyclerViewOnScrollListener);

private RecyclerView.OnScrollListener
        mRecyclerViewOnScrollListener = new RecyclerView.OnScrollListener() {
    @Override
    public void onScrollStateChanged(RecyclerView recyclerView,
                                     int newState) {
        super.onScrollStateChanged(recyclerView, newState);
    }

    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);
        int visibleItemCount = layoutManager.getChildCount();
        int totalItemCount = layoutManager.getItemCount();
        int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition();

        if (!isLoading && currentPage < totalPages) {
            if ((visibleItemCount + firstVisibleItemPosition) >= totalItemCount
                    && firstVisibleItemPosition >= 0
                    && totalItemCount >= numberOfItemsInAPage) {
                loadMoreItems();
            }
        }
    }
};

      

-2


source







All Articles