【问题标题】:Load next and previous page on ListView Scroll in android在Android中的ListView Scroll上加载下一页和上一页
【发布时间】:2017-12-14 05:15:39
【问题描述】:

我正在创建一个从服务器获取新闻的 ListView。而且我正在明智地获取数据页面,即有一次我得到一页有 10 个项目。在向下滚动时,我再次点击该 Web 服务并显示下一页数据,但问题是假设我在服务器上总共有 22 个项目,在第一次尝试时,我得到 22 到 13,然后是 12 到 3,之后到最后2 数据网络服务一次又一次的点击。我不知道为什么只有 2 个数据时 Web 服务会一次又一次地受到攻击。而且我不知道如何加载上一页。

相同的代码

       listNews.setOnScrollListener(new AbsListView.OnScrollListener() {

        public void onScrollStateChanged(AbsListView view, int scrollState) {




        }

        public void onScroll(AbsListView view, int firstVisibleItem,
                             int visibleItemCount, int totalItemCount) {

            Log.e(TAG, "onScroll: "+firstVisibleItem +" "+visibleItemCount+" "+totalItemCount );
            if(firstVisibleItem+visibleItemCount == totalItemCount && totalItemCount!=0)
            {

                callNewsApi((Integer.parseInt(currentPage)+1)+"");
            }
        }
    });

【问题讨论】:

标签: android android-layout listview android-fragments pagination


【解决方案1】:

您需要在每次点击响应后验证最后一页。在服务器站点上执行此操作的更好方法。但您也可以在客户端对其进行管理。下面是一个例子。

 private boolean isLastPage;
private int PER_PAGE_COUNT=10;
//@params size- size of data which you get form server each time hit i shoule <= PER_PAGE_COUNT
public void validateLastpage(int size) {
    if(size==0){
        isLastPage=true;
    }else {
        if (size % PER_PAGE_COUNT == 0) {
            isLastPage = false;
        } else {
            isLastPage = true;
        }
    }
}

现在检查每次点击是否有 isLastPage。这将停止在服务器站点没有更多数据后调用的额外网络。 在每次响应后使用新的数据大小调用 validateLastpage(int size) 。 在每个分页检查最后一页。

 public void onScroll(AbsListView view, int firstVisibleItem,
                     int visibleItemCount, int totalItemCount) {
    Log.e(TAG, "onScroll: "+firstVisibleItem +" "+visibleItemCount+" "+totalItemCount );
    if (firstVisibleItem + visibleItemCount == totalItemCount && totalItemCount != 0) {
        if(!isLastPage)
        callNewsApi((Integer.parseInt(currentPage) + 1) + "");
    }
}

【讨论】:

    猜你喜欢
    • 2011-12-05
    • 2013-08-22
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    相关资源
    最近更新 更多