我有一个列表视图,我试图在这个列表视图中每 10 秒显示一个新的数据“页面”。
为此,我每 5 个项目对我的数据列表使用一种过滤器:
List<List<CustomObject>> pages = new ArrayList<List<CustomObject>>();
for (int i = 0; i < listToFilter.size(); i += 5) {
if ((i + 5) <= listToFilter.size()) {
// create a group of 5 custom objects
List<CustomObject> group = listToFilter.subList(i, i + 5);
pages.add(new ArrayList<CustomObject>(group));
} else {
// add the remaindering custom objects in an other list
int remainder = listToFilter.size() - i;
List<CustomObject> group = listToFilter.subList(i, i + remainder);
pages.add(new ArrayList<CustomObject>(group));
}
}
在这段代码的末尾,我有我的列表“页面”,其中包含最大大小为 5 的不同列表,例如:
pages = {java.util.ArrayList@831696467904} size = 2 // page list
[0] = {java.util.ArrayList@831698108576} size = 5 // page1
[1] = {java.util.ArrayList@831698106184} size = 2 // page2
所以我的目标是在这些页面上进行迭代,以每 10 秒显示一个新页面。就像一本书使用 listView 和一个适配器来浏览它的页面。
我有一个计时器,它每 10 秒调用一次我的适配器并交换我的数据以更新接口:
... // My filter job
this.notifyDataSetChanged();
clear();
addAll(pageData);
目前一切正常,但每次我都必须重新创建一个新列表来完成这项工作。
我想知道是否有解决方案只在我的“listToFilter”上使用过滤器(我没有使用 java8),而不是通过这个复杂的自定义过滤器,它每次都重新创建一个新列表。
编辑:
我找到了一种通过使用Range和番石榴来管理它的方法。您可以定义要在列表中浏览的项目范围。但目前我还不确定如何使用它并使用自定义对象迭代您的范围列表。