有人可以向我展示如何将AlphabetIndexer
与使用getView
的自定义适配器一起使用的示例吗?我使用标准适配器,但不知道如何使用自定义适配器实现它。
由于
答案 0 :(得分:8)
如果您使用LoaderManager来管理适配器的光标,则需要进行小幅调整并覆盖适配器swapCursor方法:
public Cursor swapCursor(Cursor c) {
// Create our indexer
if (c != null) {
mIndexer = new AlphabetIndexer(c, c.getColumnIndex(Books.TITLE),
" ABCDEFGHIJKLMNOPQRSTUVWXYZ");
}
return super.swapCursor(c);
}
其他所有内容都与@vsm描述的一样。
答案 1 :(得分:7)
这就是我使用AlphaIndexer的方式
private final class ContactListItemAdapter extends ResourceCursorAdapter
implements SectionIndexer {
AlphabetIndexer alphaIndexer;
public ContactListItemAdapter(Context context, int layout, Cursor c) {
super(context, layout, c);
alphaIndexer = new AlphabetIndexer(c, NAME_COLUMN_INDEX,
" ABCDEFGHIJKLMNOPQRSTUVWXYZ");
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
....
a normal getView
....
}
public int getPositionForSection(int section) {
return alphaIndexer.getPositionForSection(section);
}
public int getSectionForPosition(int position) {
return alphaIndexer.getSectionForPosition(position);
}
public Object[] getSections() {
return alphaIndexer.getSections();
}
}
NAME_COLUMN_INDEX是数据库架构中列的索引。
...
如果这不是您所需要的,请添加一些代码,这些代码应该是要扩展的类等等。
无论如何,我希望这会有所帮助。