39

私はAutoCompleteTextView自分のアプリに動作します。の作成に成功しましたonClickItemListener。問題は、ユーザーが選択したテキストを取得する方法です。

そして、これが問題です:提案を検索するためにArrayList単語を に渡します。Adapterユーザーが単語を入力すると、提案リストが (UI 側の行で) 短くなるためArrayList、ユーザーが選択したインデックスから単語を取得したい場合、インデックスが一致しないため、間違った単語を取得します。

Stringインデックスをいじらずに、ユーザーが選択したテキスト ( ) を取得するにはどうすればよいですか?

これが私のコードです:

public class AutocompleteActivity extends BaseActivity {

    private DBManager m_db;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.autocomplete);

        m_db = new DBManager(this);
        final ArrayList<String> words = m_db.selectAllWords();
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.listitem, words);

        AutoCompleteTextView tv = (AutoCompleteTextView)findViewById(R.id.autocomplete);
        tv.setThreshold(1);
        tv.setAdapter(adapter);

        tv.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                Log.i("SELECTED TEXT WAS------->", words.get(arg2));
            }
        });
    }
}
4

9 に答える 9

55

ええ...残念ながら、実装する必要のあるonItemClickメソッドのパラメーターの名前はそれほどわかりやすいものではありませんが、これらの名前の例を次に示します。

autoCompleteTextView.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int position, long rowId) {
        String selection = (String)parent.getItemAtPosition(position);
        //TODO Do something with the selected text
    }
});
  • 親クリックが発生したAdapterView。
  • viewクリックされたAdapterView内のビュー(これはアダプターによって提供されるビューになります)
  • positionアダプター内のビューの位置。
  • idクリックされたアイテムの行ID。

詳細については、http://developer.android.com/reference/android/widget/AdapterView.OnItemClickListener.htmlを参照してください。

于 2012-02-15T00:26:22.633 に答える
46

arg0あなたAdapterViewarg2立場です。

やってみました:

arg0.getItemAtPosition(arg2);
于 2011-01-27T18:23:05.683 に答える
8

あなたが探しているのはこれだと思います。

String s = this.mCountry.getEditableText().toString();

はどこmCountryですかAutoCompleteTextView

this.mCountry = (AutoCompleteTextView) findViewById(R.id.autocomplete_country);
    ArrayAdapter<String> adapterCountry = new ArrayAdapter<String>(this, R.layout.list_item, countries);
    this.mCountry.setAdapter(adapterCountry);

mCountryは国のリストで、 で選択した国を保存したかったのSharedPreferencesです。

お役に立てれば。

于 2012-05-04T10:10:23.960 に答える
4

何よりも簡単

AutoCompleteTextView で選択した提案のテキストを取得するには、これを使用します

      autoCompleteTextView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Log.e("========>>", autoCompleteTextView.getText().toString());
        }
    });
于 2016-04-18T13:29:30.520 に答える
2

で選択された提案のテキストを取得するもう 1 つの方法はAutoCompleteTextView

@Override
public void onItemClick(AdapterView<?> parent, View view,int position, long id) 
{
    TextView txtvw=(TextView) view;
    String str=txtvw.getText().toString();
    int index = contactNames.indexOf(str);
} 
于 2015-05-14T05:23:03.783 に答える
2

これが問題を解決するコードです。

 private AdapterView.OnItemClickListener onItemClickListener = new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
        int index = (int) view.getTag();
        Object item = parent.getItemAtPosition(index);
        if (item instanceof SearchItemShareConnectionDAO) {
            SearchItemShareConnectionDAO dao = (SearchItemShareConnectionDAO) item;

        }
    }
};

アダプタの getView() メソッドで SetTag(Dao.getPosition) 。

于 2016-05-20T09:48:07.120 に答える