2

AutoCompleteTextView で使用する Filterable を実装する BaseAdapter を拡張するカスタム アダプター クラスを作成しました。フィルタリングと選択は正常に機能しています。

唯一の問題は、リストの項目をクリックすると、AutoCompleteTextView が自動的に adaptersgetItem(int position)メソッドを呼び出し、そのテキストを に設定するように見えることgetItem(position).toString()です。ベースアダプターでカスタムオブジェクトを使用しているため、この動作は望ましくありません。これ"ClassName [id=xx, variable1=var1]"により、TextView に入れられるような文字列が生成されます。

これまでに独自の OnItemClickListener と OnItemSelectedListener を設定しようとしましたが、これはカスタム文字列を直接記述するのではなく、上記の設定文字列をすばやくオーバーライドするだけのようです。このデフォルト文字列を無効にするにはどうすればよいですか?

ああ、この場合、オブジェクトの toString() メソッドをオーバーライドすることはできません。

何か案は?よろしくダニジュー

4

2 に答える 2

2

私は同じ問題を抱えていましたが、次の方法で解決しました。

private AutoCompleteTextView actv;
CustomAdapter adapter = new CustomAdapter(context, resource, data);
    actv.setAdapter(adapter);
    actv.setOnItemClickListener(new AdapterView.OnItemClickListener()
    {
        @Override
        public void onItemClick(AdapterView<?> av, View view, int index, long arg3)
        {
            CustomAdapter adapter = (CustomAdapter)av.getAdapter();
            Pair customObject = (Pair<Integer, String>) adapter.getItemAtPosition(index);
        }
    });

内にカスタムgetItemAtPositionメソッドを作成する必要がありますCustomAdapter。このように、getItem(int position)によって要求されたをオーバーライドするAutoCompleteTextView必要はなく、代わりに を使用getItemAtPositionして目的の を返すことができますCustomObject

于 2013-11-06T15:55:40.277 に答える