亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

由LoaderManager管理的具有自定義適配器的AlphabetIndexer

由LoaderManager管理的具有自定義適配器的AlphabetIndexer

慕哥9229398 2019-11-03 08:04:04
我正在嘗試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。



查看完整回答
反對 回復 2019-11-04
  • 1 回答
  • 0 關注
  • 269 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號