我想显示带有类别的列表视图,例如水果、蔬菜、其他等。
水果
- 苹果
- 芒果
-- 葡萄
蔬菜
- 洋葱
- 番茄
其他
- 腰带
使用 CursorLoader 进入光标的数据,例如,
1个苹果果实
2芒果果实
3 葡萄果实
4 洋葱蔬菜
5 番茄蔬菜
6 其他腰带
除了 AlphabetIndexer,我找不到任何解决方案,但它不能满足我的要求。有人知道怎么做吗?[注意:我没有像 isHeader 这样的单独列]
我想显示带有类别的列表视图,例如水果、蔬菜、其他等。
水果
- 苹果
- 芒果
-- 葡萄
蔬菜
- 洋葱
- 番茄
其他
- 腰带
使用 CursorLoader 进入光标的数据,例如,
1个苹果果实
2芒果果实
3 葡萄果实
4 洋葱蔬菜
5 番茄蔬菜
6 其他腰带
除了 AlphabetIndexer,我找不到任何解决方案,但它不能满足我的要求。有人知道怎么做吗?[注意:我没有像 isHeader 这样的单独列]
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();
}
仅供参考,这将非常慢,因此我建议您在加载更多数据时创建一个索引结构,以缓存和预取这些方法请求的大部分信息。