我有一個ListView充滿了ArrayAdapter的數據,我實現了搜索功能,因爲列表非常長。帶搜索功能的ListView沒有預期的行爲
比方說,我有這樣的名單:
0 - 橙 1 - 蘋果 2 - 番茄(Tomatoes) 3 - 鱷魚 4 - 火車 5 - 龜 6 - 狗 7 - 貓
好吧,現在我用EditText過濾這個列表,我寫了一個t
。然後,名單將是:
0 - 番茄(Tomatoes) 1 - 火車 2 - 龜
的問題是,我實現了一個onItemClickListener
這樣我就可以訪問到網頁或其他取決於項目當我點擊第一個(0 - tometoe)時,它會在沒有過濾的情況下(0 - 橙色)選擇列表第一個元素的(0),當我點擊第二個元素(1-列)時,它會選擇該列表的第一個元素沒有過濾(1 - 蘋果)等(1)等...
這裏是我使用的代碼:
ListView lv = new ListView(this);
final String[] tricks;
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.listviewcustom, tricks);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(android.widget.AdapterView<?> arg0, View arg1, int arg2, long arg3) {
showTrick(arg2, tricks[arg2], modality);
//Log.e("itemClickListener", String.valueOf("LISTVIEWJ " + arg2 + " - " + tricks[arg2] + " - " + modality));
}
});
searchBox.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
adapter.getFilter().filter(cs);
}
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { }
public void afterTextChanged(Editable arg0) { }
});
tricksLayout.addView(lv, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
所以我的問題是:我如何設法讓它工作,因爲我想?
謝謝你的優勢!
你是否在'adapter.getFilter()。filter(cs);'''後面調用'notifyDataSetChanged'? – Wenhui