3 回答

TA貢獻(xiàn)1847條經(jīng)驗 獲得超11個贊
基本上,機(jī)器人自動完成textview不是很強(qiáng)大,當(dāng)我必須處理更大量的數(shù)據(jù)時,我所做的是,我保持文本更改監(jiān)聽編輯文本以進(jìn)行搜索,然后每當(dāng)編輯文本上的某些內(nèi)容發(fā)生變化時,它查詢數(shù)據(jù)庫。
如果這可能對某人有幫助,可以在onCreate上放置一個edittext
EditText etSearch = (EditText)findViewById(R.id.etSearchBox);etSearch.addTextChangedListener(filterTextWatcher);//The filterTextWatcher is private TextWatcher filterTextWatcher = new TextWatcher() { @Override public void afterTextChanged(Editable s) { } @Override public void beforeTextChanged(CharSequence s, int start, int count,int after) { } @Override public void onTextChanged(CharSequence s, int start, int before,int count) { adapter.getFilter().filter(s.toString()); } };
因此,在您的適配器中,您需要創(chuàng)建一個getFilter()方法...
@Override public Filter getFilter() { if (nameFilter == null) { nameFilter = new NameFilter(); } return nameFilter;} private class NameFilter extends Filter { @Override protected FilterResults performFiltering(CharSequence constraint) { FilterResults results = new FilterResults(); Cursor cursor = null; // get your cursor by passing appropriate query here results.values = cursor; results.count = cursor.getCount(); return results; } @Override protected void publishResults(CharSequence constraint, FilterResults results) { notifyDataSetChanged(); } }

TA貢獻(xiàn)1785條經(jīng)驗 獲得超8個贊
調(diào)用setStringConversionColumn()
方法而不是setCursorToStringConverter()
@Olaf建議。我已經(jīng)設(shè)置了這個,onLoadFinished()
因為這是唯一Cursor
可用的,因為這是實現(xiàn)a LoaderManger
。
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.) Log.d(DEBUG_TAG, "onLoadFinished()"); mAdapter.setStringConversionColumn(data.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME)); mAdapter.swapCursor(data);}
這適用于選擇一個項目MultiAutoCompleteTextView
,但不允許在中選擇多個項目MultiAutoCompleteTextView
。
我猜這個onTextChanged()
方法存在一些問題,因為它調(diào)用了restartLoader()
。這適用于此視圖中的第一個條目,但不適用于后續(xù)條目。我現(xiàn)在不太確定什么是錯的。
- 3 回答
- 0 關(guān)注
- 368 瀏覽
添加回答
舉報