0

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);

だから私の質問は:どうすれば私が望むようにそれを機能させることができますか?

よろしくお願いします!

4

1 に答える 1

1

私はあなたの質問を完全には理解していませんでした。これがあなたの質問から私が理解している答えです。あなたが尋ねたものではない場合は、コメントしてください。答えを編集します。

ArrayList を作成して入力します。

ArrayList<String> list = new ArrayList<String>();

list.add("orange"); //1
list.add("apple"); //2
list.add("tomatoe"); //3
list.add("alligator"); //4
list.add("train"); //5

フィルターでは、このようなリストビューを取得します 0 - トマト 1 - 電車 2 - カメ

そして、位置1をクリックするとonItemClickListenerになります

String temp =  here you get "train" at index 1 
//temp = "train"

int i = termsList.indexOf("train"); 
// it will give you actual position of train which is 5

編集済み

notifyDataSetChangedリストを適切に更新するためにも使用します。

于 2012-11-28T21:40:29.660 に答える