首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在android listView中滚动分页

如何在android listView中滚动分页
EN

Stack Overflow用户
提问于 2014-06-29 04:41:49
回答 2查看 1.2K关注 0票数 0

我有一个带适配器的listView。

我想从服务器获取项目,然后将图像加载到每个项目。

服务器可以返回数十个项目,所以我从客户端按10页询问它们。

我不希望用户选择一个页面或"next\back“

只是为了在需要的时候添加更多的物品。

我想用一个本地的收藏,然后用接下来的十项来填满它。

我的指示器在Adapter::getView位置== 8中。

问题是,从服务器响应填充本地集合的函数在适配器之外。

如何调用此方法,然后刷新适配器或使其失效?

你会用不同的方法吗?

由于我加载图像,我需要压缩他们,所以我不能使用和现成的无休止的列表,这是存储在git上。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-29 04:50:47

重要的是,函数在哪里,您只需要几步。

1-在适配器中定义页码。

代码语言:javascript
复制
 int pageNumber;

 // getter and setter 

2-在getView中定义一个方法,用于:

代码语言:javascript
复制
if (position == list.size()-2 && list.size() < totalRecord)  // this make 8 , 18 , ...
    getMoreData();

总记录是服务器端的所有记录。

然后在getMore函数调用父方法中:

如果在活动中:

代码语言:javascript
复制
  ((ActivityName)context).functionName();

如果在片段类中,一种方法是将片段类传递给适配器,然后调用:

代码语言:javascript
复制
 fragment.functionName();

然后,在活动函数中,只需增加(adapter.setPageNumber(++adapter.getPageNumber())的值,并将数据添加到列表中,然后调用adapter.notifyDatasetChanged();

最后一步,因为getMoreData();可能会调用更多,一旦您可以添加一个布尔值来检查是否调用了该值,如下所示:

代码语言:javascript
复制
if (position == list.size()-2 && list.size() < totalRecord && isCanLoad())

在getMoreData()中,将其更改为false,并在从活动/片段类获取所有数据之后,再次将其更改为true

票数 0
EN

Stack Overflow用户

发布于 2014-06-29 04:46:52

每当您想要向listView添加更多项时:

  1. 将数据项添加到集合中,集合通常用于创建适配器(通常是ArrayList )。
  2. 添加所有项目后调用adapter.notifyDataSetChanged()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24473225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档