这是我创建的示例实现。也许它澄清了 SectionIndexer 一点。
为了保存您的数据,您可以使用私有内部类:
private class Item {
public int sectionNumber;
public Long id;
public String name;
}
private class Section {
public int startPosition;
public String header;
@Override
public String toString(){
return header;
}
}
为您的项目使用一个列表,为您的部分使用一个列表:
private List<Item> items = new ArrayList<Item>();
private List<Section> sections = new ArrayList<Section>();
SectionIndexer 的列表适配器中的实现现在可能如下所示:
@Override
public int getPositionForSection(int sectionNumber) {
return sections.get(sectionNumber).startPosition;
}
@Override
public int getSectionForPosition(int itemPosition) {
return items.get(itemPosition).sectionNumber;
}
@Override
public Object[] getSections() {
return sections.toArray();
}
当然,您现在应该实现一个方法来填充适配器的数据列表。