【问题标题】:pagination in android with recyclerView使用recyclerView在android中进行分页
【发布时间】:2019-03-29 22:47:28
【问题描述】:

我正在制作我正在使用 recyclerView 执行分页的 android 应用程序。基本上我的片段中有两个 recylerView 。我正在使用带有一个 recyclerView 的 recylerview addOnScrollListener 执行分页。但它不能正常工作。当我提出这个条件时

if(dy > 0 ){

}

那么 此条件变为假,没有任何实现,当我删除此条件时,所有页面都加载而无需滚动。我怎么能做到这一点。当我向下滚动回收站视图时,我想要这个,然后将加载下一页。 这是我的代码:

private void recyclerPagination() {
    rvRecProduct.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);
            if (dy > 0) {
                linearLayoutManager = (GridLayoutManager) rvRecProduct.getLayoutManager();
                visibleItemCount = recyclerView.getChildCount();
                totalItemCount = linearLayoutManager
                        .getItemCount();
                firstVisibleItem = linearLayoutManager.findFirstVisibleItemPosition();
                if (loading) {
                    if (totalItemCount > previousTotal) {
                        previousTotal = totalItemCount;
                        page++;
                        loading = false;
                    }
                }
                if (page <= limit) {
                    if (!loading && (firstVisibleItem + visibleThreshold + visibleItemCount) >= totalItemCount) {
                        loading = true;
                        getPagination();
                        Log.e("PageNO",String.valueOf(page));
                    }
                }
            }
        }
    });
}

【问题讨论】:

标签: android android-fragments android-recyclerview pagination


【解决方案1】:

Android 分页使用 Recycler View 加载超过 10 个页面 分页滚动监听类:

    public abstract class PaginationScrollListener extends RecyclerView.OnScrollListener {

    LinearLayoutManager layoutManager;

    public PaginationScrollListener(LinearLayoutManager layoutManager) {
    this.layoutManager = layoutManager;
    }

    @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() && !isLastPage()) 
    {
        if ((visibleItemCount + firstVisibleItemPosition) >= totalItemCount
                && firstVisibleItemPosition >= 0) 
        {
            loadMoreItems();
        }
    }

    }

    protected abstract void loadMoreItems();

    public abstract boolean isLastPage();

    public abstract boolean isLoading();}

将此代码添加到您的 Activity 或 Fragment 中:

public static final int PAGE_START = 1;
private int CURRENT_PAGE = PAGE_START;
private boolean isLoading = false, isLastPage = false;

private RecyclerView recyclerView;
private LinearLayoutManager linearLayoutManager;

recyclerView = findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
linearLayoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(linearLayoutManager);

recyclerView.setAdapter(new MyAdapter(list))
recyclerView.addOnScrollListener(new PaginationScrollListener(linearLayoutManager) {
                    @Override
                    protected void loadMoreItems() {
                        isLoading = true;
                        CURRENT_PAGE++;
                        loadNextPage();
                    }

                    @Override
                    public boolean isLastPage() {
                        return isLastPage;
                    }

                    @Override
                    public boolean isLoading() {
                        return isLoading;
                    }
                });

【讨论】:

    猜你喜欢
    • 2019-05-22
    • 2018-12-21
    • 2017-11-07
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    相关资源
    最近更新 更多