我正在嘗試AlphabetIndexer使用自定義適配器來實現帶自定義適配器的AlphabetIndexer我的類ContactsCursorAdapter可以擴展SimpleCursorAdapter和實現,SectionIndexer 并且我正在使用A LoaderManager來管理適配器的游標,因此我已經覆蓋了swapCursor()上述示例的第二個答案所示的方法。public class ContactsCursorAdapter extends SimpleCursorAdapter implements SectionIndexer{ private LayoutInflater mInflater; private Context mContext; private AlphabetIndexer mAlphaIndexer; public ContactsCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to) { super(context, layout, c, from, to); mInflater = LayoutInflater.from(context); mContext = context; } public View getView(final int position, View convertView, ViewGroup parent) { ... } @Override public int getPositionForSection(int section) { return mAlphaIndexer.getPositionForSection(section); } @Override public int getSectionForPosition(int position) { return mAlphaIndexer.getSectionForPosition(position); } @Override public Object[] getSections() { return mAlphaIndexer.getSections(); } public Cursor swapCursor(Cursor c) { // Create our indexer if (c != null) { mAlphaIndexer = new AlphabetIndexer(c, c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME), " ABCDEFGHIJKLMNOPQRSTUVWXYZ"); } return super.swapCursor(c); }}但是,如果我將listview設置為fastScrollEnabled = true,則會出現此錯誤getListView()。setFastScrollEnabled(true);在我的類ContactsCursorLoaderListFragment中,該類擴展ListFragment并實現了LoaderManager.LoaderCallbacks。setFastScrollEnabled()調用該方法后,它將調用自定義適配器的getSections()崩潰方法。如果我對setFastScrollEnabled()呼叫進行評論,那么它不會出錯,但是我看不到AlphabetIndexer工作原理。因為我的自定義適配器設置為ListFragment而不是,這是否需要以不同的方式實現ListActivity?有人對如何使這一切起作用有建議嗎?
1 回答

暮色呼如
TA貢獻1853條經驗 獲得超9個贊
所以我終于把這個工作了。這是我的做法:
我補充說:
ListView lv = getListView();
lv.setFastScrollEnabled(true);
lv.setScrollingCacheEnabled(true);
onLoadFinished()交換新游標后的方法
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
// Swap the new cursor in. (The framework will take care of closing the
// old cursor once we return.)
mAdapter.swapCursor(data);
ListView lv = getListView();
lv.setFastScrollEnabled(true);
lv.setScrollingCacheEnabled(true);
}
因此,這三個語句已從onActivityCreated()我的自定義方法中刪除ListFragment。
- 1 回答
- 0 關注
- 269 瀏覽
添加回答
舉報
0/150
提交
取消