我有一个listView,我尝试每隔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));
}
}
在此代码的最后,我有我的列表&#39;页面&#39;其中包含最大大小为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和适配器浏览其页面的书一样。
我有一个Timer,它每10秒调用一次我的适配器并交换我的数据来更新界面:
... // My filter job
this.notifyDataSetChanged();
clear();
addAll(pageData);
目前一切正常但每次我都要重新创建一个新列表来完成这项工作。
我想知道是否有一个解决方案只是在我的&#34; listToFilter&#34;上使用过滤器(我不使用java8)。而不是通过这个复杂的自定义过滤器,每次都重新创建一个新的列表。
修改
我找到了一种方法来使用guava使用Range来管理它。您可以在列表中定义要浏览的项目范围。但目前我还不确定如何使用它并使用自定义对象迭代您的范围列表。