如何限制列表项在ListView中显示10和下一个10后单击下一步按钮

时间:2013-02-14 07:20:49

标签: android android-listview android-button

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

public int getCount() {
        return 10;
    }

但如何单独获得下一个10项等等。 任何想法

2 个答案:

答案 0 :(得分:8)

一种方法是,

1)不要用所有数据填充ArrayList。而是将它们保存在单独的ArrayList(al1)中,并使用最多10个值的ArrayList(al2)与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)在下一个按钮点击事件中,从al1获取下一个10项并分配给al2。使用您编写的公共函数,用data覆盖al2

5)BaseAdapter has a method called notifyDataSetChanged ,称之为。这样做是告诉适配器从上到下刷新。由于在刷新发生时,您已用data覆盖了新数据,因此您将看到新数据。就是这样。

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

答案 1 :(得分:3)

如果您有100个项目,那么只需为您的适配器选择前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并使用新的子列表刷新适配器。