-1

我想显示带有类别的列表视图,例如水果、蔬菜、其他等。

水果

- 苹果

- 芒果

-- 葡萄

蔬菜

- 洋葱

- 番茄

其他

- 腰带


使用 CursorLoader 进入光标的数据,例如,

1个苹果果实

2芒果果实

3 葡萄果实

4 洋葱蔬菜

5 番茄蔬菜

6 其他腰带


除了 AlphabetIndexer,我找不到任何解决方案,但它不能满足我的要求。有人知道怎么做吗?[注意:我没有像 isHeader 这样的单独列]

4

1 回答 1

2

SectionIndexer 不会组织您加载的数据。理想情况下,您会在查询或任何支持它的集合之前完成此操作。SectionIndexer 仅允许adapterView 查询支持的部分列表,以及它们在哪里开始、结束并给出它所在的部分的位置。因此它假设您的数据已经排序。

您可以使用以下 impl 创建 SectionIndexer

@Override
public Object[] getSections() {
    return new CharSequence[] {"Fruit", "Vegetable", "Other"};
}

@Override
public int getSectionForPosition(int position) {
   String text = getItem(position);
   if (text.contains("Fruit") {
      return 0;
   } else if (text.contains("Vegetable") {
      return 1;
   } else {
      return 2;
   }
}

@Override
public int getPositionForSection(int section) {
   String sectionName = (String) getSections()[section];
   for (int i=0,length=getCount(); i < length; i++) {
     if (((String)getItem(i)).contains(sectionName)) {
          return i;
     }
   }
   return getCount();
}

仅供参考,这将非常慢,因此我建议您在加载更多数据时创建一个索引结构,以缓存和预取这些方法请求的大部分信息。

于 2012-10-08T20:29:54.503 回答