如何从自动完成textview android获取文本

mad*_*erz 29 android android-adapterview

我的应用程序中有一个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));
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

Osc*_* S. 47

是的...不幸的是,你必须实现的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
    }
});
Run Code Online (Sandbox Code Playgroud)
  • parent发生单击的AdapterView.
  • view已单击的AdapterView中的视图(这将是适配器提供的视图)
  • position视图在适配器中的位置
  • id已单击的项的行ID.

有关详细信息,请参阅:http://developer.android.com/reference/android/widget/AdapterView.OnItemClickListener.html

  • 您的建议代替所选答案效果很好。 (2认同)

djg*_*djg 40

arg0成为你AdapterView和你arg2的位置.

你有没有尝试过:

arg0.getItemAtPosition(arg2);
Run Code Online (Sandbox Code Playgroud)


Amm*_*ari 8

我认为你在寻找的是这个.

String s = this.mCountry.getEditableText().toString();
Run Code Online (Sandbox Code Playgroud)

哪里mCountryAutoCompleteTextView.

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

mCountry是国家列表,我想保存所选国家/地区SharedPreferences.

希望这可以帮助.


小智 5

最简单的

对于在 AutoCompleteTextView 中获取所选建议的文本,请使用此

      autoCompleteTextView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Log.e("========>>", autoCompleteTextView.getText().toString());
        }
    });
Run Code Online (Sandbox Code Playgroud)