我有一个包含 100 个项目的列表视图,我想显示前 10 个项目,单击下一个按钮我必须显示下一个 10,即从 11 到 20,我有获取前 10 个项目的代码
public int getCount() {
return 10;
}
但是如何单独获得接下来的 10 个项目等等。任何想法
我有一个包含 100 个项目的列表视图,我想显示前 10 个项目,单击下一个按钮我必须显示下一个 10,即从 11 到 20,我有获取前 10 个项目的代码
public int getCount() {
return 10;
}
但是如何单独获得接下来的 10 个项目等等。任何想法
一种方法是,
1)不要用所有数据填充您的 ArrayList。而是将它们保存在单独的 ArrayList ( al1
) 中,并使用al2
具有最多 10 个值的 ArrayList ( ) 与 BaseAdapter 一起使用。
2) 最初,
3) 保持 BaseAdapter 不变,但要改变
@Override
public int getCount() {
return 10;
}
至
@Override
public int getCount() {
return data.size();
}
这不是必须的,但它是一种很好的做法。现在您将只显示 10 个项目,因为这就是您传递给适配器的所有项目。还要在扩展的 BaseAdatper 类中编写一个公共函数来设置data
变量。
4) 在下一个按钮单击事件中,获取下一个 10 项al1
并分配给al2
。使用您编写的公共函数data
用al2
.
5) BaseAdapter 有一个名为 notifyDataSetChanged 的方法,调用它。这样做是告诉适配器从上到下刷新。由于data
在刷新发生时您已用新数据覆盖,您将看到新数据。而已。
我认为您想出一种方法来跟踪al1
您当前显示的索引到哪个索引并不困难。:)
如果您有 100 个项目,那么只需为您的适配器获取前 10 个项目,当用户按下下一步时,获取下一个 10,依此类推。
编辑:根据代码请求,我可以提供一个关于如何进行分页的简单示例。
int totalItems = 100;
int currentPage = 0;
int pageSize = 10;
int numPages = (int) Math.ceil((float) totalItems/pageSize);
ArrayList<String> items = new ArrayList<String>(totalItems);
List<String> page = items.subList(currentPage, pageSize);
查看上面的示例,给定项目数和所需的页面大小,您可以计算需要显示多少页,然后您可以从 ArrayList 中选择一个子列表。每次用户按下 next 时,增加 currentPage 并使用新的子列表刷新适配器。