9

我有一个包含 100 个项目的列表视图,我想显示前 10 个项目,单击下一个按钮我必须显示下一个 10,即从 11 到 20,我有获取前 10 个项目的代码

public int getCount() {
        return 10;
    }

但是如何单独获得接下来的 10 个项目等等。任何想法

4

2 回答 2

8

一种方法是,

1)不要用所有数据填充您的 ArrayList。而是将它们保存在单独的 ArrayList ( al1) 中,并使用al2具有最多 10 个值的 ArrayList ( ) 与 BaseAdapter 一起使用。

2) 最初,

  • al2 = al1[0] 到 al1[9]
  • BaseAdatper(上下文,数据)

3) 保持 BaseAdapter 不变,但要改变

 @Override
 public int getCount() {
 return 10;
}

 @Override
 public int getCount() {
 return data.size();
}

这不是必须的,但它是一种很好的做法。现在您将只显示 10 个项目,因为这就是您传递给适配器的所有项目。还要在扩展的 BaseAdatper 类中编写一个公共函数来设置data变量。

4) 在下一个按钮单击事件中,获取下一个 10 项al1并分配给al2。使用您编写的公共函数dataal2.

5) BaseAdapter 有一个名为 notifyDataSetChanged 的​​方法,调用它。这样做是告诉适配器从上到下刷新。由于data在刷新发生时您已用新数据覆盖,您将看到新数据。而已。

我认为您想出一种方法来跟踪al1您当前显示的索引到哪个索引并不困难。:)

于 2013-02-14T08:17:15.457 回答
3

如果您有 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 并使用新的子列表刷新适配器。

于 2013-02-14T07:26:26.533 回答