首页 > 解决方案 > 如何初始化分页变量

问题描述

我正在使用一个整数变量。

int page=1;

private void pagination() {
        recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
                /*if (newState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) {
                    isScrolling = true;
                }*/
            }

            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
                currentItems = manager.getChildCount();
                totalItems = manager.getItemCount();
                scrollOutItems = manager.findFirstVisibleItemPosition();
                if (isScrolling) {
                    if (totalItems > previousTotal) {
                        previousTotal = totalItems;
                        page++;
                        isScrolling = false;
                    }
                }
                if (!isScrolling && (currentItems + scrollOutItems == totalItems)) {
                    progressBar.setVisibility(View.VISIBLE);
                    //page=page+1;
                    /*new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                        }
                    }, 5000);*/
                    getNext();
                    progressBar.setVisibility(View.GONE);
                    isScrolling = true;
                    Log.v("All Courses", "Page Number: " + page);
                }
            }
        });
    }

我想显示所有课程,但使用 8 门课程显示,滚动时显示下一个 8 门课程。然后我单击任何课程然后转到新片段,但我在下一个片段中按返回按钮返回课程片段然后页面变量不初始化 1 值。页面变量存储下一个增量值。

标签: androidscrollpaginationprogress-bar

解决方案


您可以使用以下代码进行分页,效果很好。将您的第一页数据添加到 yourRecycler然后设置以下addOnScrollListener

private Integer currentPage = 1;
yourRecycler.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override 
        void onScrollStateChanged(RecyclerView recyclerView, Integer newState) {
            super.onScrollStateChanged(recyclerView, newState)
            if (!recyclerView.canScrollVertically(1)) {
                currentPage++;
                getNextPage();
                
            }
        }
    })

并且您需要在以下功能中添加新的页面添加操作:

private void getCurrentPage(){
    //add new page data to yourRecycler
}

注意:这是 kotlin 代码,我转换为 java。它可以缺少分号等。


推荐阅读