ArrayAdapterのデータで満たされたListViewがあり、リストが非常に長いため、検索関数を実装しました。
私がこのリストを持っているとしましょう:
0-オレンジ1-リンゴ2-トマト3-ワニ4-電車5-カメ6-犬7-猫
さて、このリストをフィルタリングするために使用するEditTextに、を書き込みますt
。次に、リストは次のようになります。
0-トマト1-列車2-カメ
問題はonItemClickListener
、アイテムに応じてページまたは別のページにアクセスできるように実装し、最初のページ(0-tometoe)をクリックすると、リストの最初の要素の(0)が選択されることです。フィルタリングなし(0-オレンジ)、2番目の要素(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);
だから私の質問は:どうすれば私が望むようにそれを機能させることができますか?
よろしくお願いします!