【问题标题】:autocompletetextview and onitemclick自动完成文本视图和 onitemclick
【发布时间】:2014-07-02 22:46:53
【问题描述】:

我已经实现了 onitemclicklistener。我有 3 个自动完成文本视图。我想获取单击 autocompletetextview 的 id(xml 文件中使用的 id)。我可以通过实现 onitemselectedlistener 和使用微调器来解决这个问题。但是我如何通过实现 onitemclicklistener 和 autocompletetextview 而不是微调器来解决它。请帮助我...这是正确的代码(onitemselectedlistener 和 spinner):

    public void onItemSelected(AdapterView<?> parent, View v, int position,long id) {
     Spinner spinner = (Spinner) parent;

     if (spinner.getId() == R.id.spinner_select_bus){
        //stuff
 }
 }

这是我的错误代码:

public void onItemClick(AdapterView<?> parent, View v, int position,long id) {
     AutoCompleteTextView actv = (AutoCompleteTextView) parent;
     if (actv.getId() == R.id.spinner_select_bus){
        //stuff
 }
 }

我知道这是错误的方法,因为 AdapterView 无法转换为 AutoCompleteTextView。 bt如何解决这个问题......

【问题讨论】:

  • 使用 AutoCompleteTextView 投射 View v 而不是投射父级。

标签: android xml autocompletetextview onitemclicklistener


【解决方案1】:

您可以创建an anonymous inner listener class which holds your whole onItemClick-code,也可以通过将AutoCompleteTextView 传递给onItemClick 函数的方式创建a listener class which modifies the onItemClick call

例如您的代码可能如下所示:

acTextView1.setOnItemClickListener(
    new AutoCompleteTextViewClickListener(acTextView1, this));
acTextView2.setOnItemClickListener(
    new AutoCompleteTextViewClickListener(acTextView2, this));
acTextView3.setOnItemClickListener(
    new AutoCompleteTextViewClickListener(acTextView3, this));

public void onItemClick(AdapterView<?> parent, View v, int position,long id) {
     //v had been modified by AutoCompleteTextViewClickListener 
     //to contain the original AutoCompleteTextView
     AutoCompleteTextView actv = (AutoCompleteTextView) v;
     if (actv.getId() == R.id.actextview_select_bus){
        //stuff
     }
}

Here,你会找到definition of AutoCompleteTextViewClickListener.

【讨论】:

    【解决方案2】:
    public void onItemClick(AdapterView<?> parent, View v, int position,long id) {
       if(parent.getAdpater()==yourAdapterInstance){
        }
     }
    

    【讨论】:

      【解决方案3】:

      为什么不在 onCreate 方法中为每个 AutoCompleteTextView 设置一个 onClickListener?

      【讨论】:

      • 我在我的 on create 方法中为每个 AutoCompleteTextViews 设置了一个 onClickListener,我不共享它......一切都很好......我可以得到选定的项目......但是如何在 onItemClick 方法中获取 autocompletetextview 的 id? @Vexman
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      • 2012-05-16
      • 1970-01-01
      相关资源
      最近更新 更多