我正在尝试使用AlphabetIndexer实现快速滚动器,但是当光标更改时,它不会刷新索引检查。在我的CursorAdapter构造函数中,我调用setCursor(cursor)
,但是没有任何变化,并根据文档进行:
但是什么也没发生。我将其用于搜索过滤器,因此当我搜索联系人时,它会使用联系人更新列表,因此AlphabetIndexer应该可以更新列表中新项目的索引。
示例:我的整个列表以以“A”开头的联系人开头,以“E”开头的联系人结尾。因此,AlphabetIndexer将在其缓存中包含此索引。
但是,让我们尝试搜索以“C”开头的联系人,并说我有250个以“C”开头的联系人。因此,我必须快速滚动浏览此联系人,并且必须显示'C'索引,但是它不仅显示'C'而是显示所有索引,而这些索引是我拥有整个列表时显示的。
这是我的CursorAdapter构造函数,在其中我为每个键入的字母调用setCursor(cursor):
public MyCursorAdapter(Context context, Cursor cursor, ArrayList<Integer> ids)
{
super(context, cursor);
try
{
mAlphaIndexer = new AlphabetIndexer(cursor, cursor.getColumnIndexOrThrow("Name")," ABCDEFGHIJKLMNOPQRSTUVWXYZ");
notifyDataSetChanged();
mAlphaIndexer.setCursor(cursor);
this.mSelectedContacts = ids;
Log.e("MyCursorAdapter", "construtor: ");
}
catch(Exception ex)
{
Log.e("MyCursorAdapter", "Error: " + ex);
}
finally
{
mAlphaIndexer.setCursor(cursor);
}
}
最佳答案
我已通过在设置适配器后依次调用此命令来解决此问题:
listView.setFastScrollEnabled(false);
listView.setFastScrollEnabled(true);
那对我有用。