筛选每个' x'的最佳方法项目

时间:2015-04-10 11:01:35

标签: java android listview android-arrayadapter android-guava

我有一个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来管理它。您可以在列表中定义要浏览的项目范围。但目前我还不确定如何使用它并使用自定义对象迭代您的范围列表。

0 个答案:

没有答案