0

リストを検索する機能に問題があります。リスト配列String[]は、実際の .java ファイルの に添付されていましたが、配列を文字列 xml ファイルに移動して、アプリで異なる言語を使用する別の機能を実装しました。したがって、リストビューを翻訳する

とにかく、コードが次のことを行っている理由は理解していますが、それを解決する方法がわかりません...

Resources res = getResources();
final String[] items = res.getStringArray(R.array.societies_array);

listView2 = (ListView) findViewById(R.id.societieslist);
EditText inputSearch = (EditText) findViewById(R.id.inputSearch);

// Adding items to listview
adapter = new ArrayAdapter<String>(this,
        android.R.layout.simple_list_item_1, items);
inputSearch.addTextChangedListener(new TextWatcher() {
    @Override
    public void onTextChanged(CharSequence cs, int arg1, int arg2,
            int arg3) {
        // When user changed the Text
        System.out.println(cs);
        SocietiesScreen.this.adapter.getFilter().filter(cs);
    }

    @Override
    public void beforeTextChanged(CharSequence arg0, int arg1,
            int arg2, int arg3) {
        // TODO Auto-generated method stub
    }

    @Override
    public void afterTextChanged(Editable arg0) {
        // TODO Auto-generated method stub
    }
});

リストの onclick リスナーはリストのインデックスに依存するため、検索されていない場合は正常に動作しますが、特定のオプションを検索すると、新しい「最初のオプション」に元の番号を保持する代わりに新しいインデックス番号が割り当てられるようになりました

それが理にかなっていることを願っています。私は十分なコードを提供しました。他に何か必要な場合はお知らせください

ありがとう

4

1 に答える 1

0

ここで、非常によく似た質問にすでに回答したと思います。「listViewの世界」の講義も必見です。

基本的に、カスタムの BaseAdapter を使用すると、検索フィールドに何かがある限り有効になる、フィルター処理されたアイテム用の新しいモードを作成できます。

このモードを有効にすると、アイテムは元のリストからではなく、フィルタリングされたリストから取得されます。

独自の BaseAdapter を使用しない場合は、このリンクを確認してください。

于 2013-04-18T17:50:12.903 に答える