如何从自动完成textview的android文本

我有一个AutoCompleteTextView在我的应用程序的作品。 我已经成功地创build了一个onClickItemListener。 问题是如何抓住用户select的文本。 这是事情:我有一个ArrayList与单词传递给适配器searchbuild议。 当用户input一个单词时,build议列表变得更短(在UI一侧的行中),所以当我想从用户select的索引处的ArrayList中获取单词时,由于索引不匹配,我得到了错误的单词。 我怎样才能得到用户select的文本(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)); } }); } } 

Solutions Collecting From Web of "如何从自动完成textview的android文本"

arg0是你的AdapterViewarg2的位置。

你有没有尝试过:

 arg0.getItemAtPosition(arg2); 

是的…不幸的是,你必须实现的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。
  • 查看被点击的AdapterView中的视图(这将是适配器提供的视图)
  • 位置视图在适配器中的位置
  • id被点击的项目的行ID。

欲了解更多信息,请参阅: http : //developer.android.com/reference/android/widget/AdapterView.OnItemClickListener.html

我觉得你要找的是这个。

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

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

mCountry是国家列表,我想保存在SharedPreferencesselect的国家。

希望这可以帮助。

尝试这个:

 txtPurpose.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { Purpose selected = (Purpose) arg0.getAdapter().getItem(arg2); txtPurpose.setTag(selected); } }); 

最简单的

要获取AutoCompleteTextView中选定的build议的文本使用此

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

获取在AutoCompleteTextView中select的build议文本的另一个是

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

这是解决问题的代码。

  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()方法中设置标签(Dao.getPosition)。

获取用户select的显示项目的文本

 public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { String selectedItemText = arg0.getItemAtPosition(arg2); Log.i("myTag", "SELECTED TEXT WAS["+selectedItemText+"]); } 

遵循最佳实践,请为variables使用某种forms的描述性术语,您的代码将更有意义:

 public void onItemClick(AdapterView<?> adapterViewIn, View viewIn, int selectedItemIndexIn, long id)