如何为AutoCompleteTextView设置setOnClickListener?

时间:2011-12-27 12:14:04

标签: android autocompletetextview

我正在为AutoCompleteTextView选择文本。我希望将setonclicklistener应用于所选文本。如果有任何想法。

ArrayAdapter<String> arrAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, sampleACTV); 
 AutoCompleteTextView ACTV = (AutoCompleteTextView) findViewById(R.id.spinner);
 ACTV.setAdapter(arrAdapter); 

 }
 private static final String[] sampleACTV = new String[]
         { "android","androidpeople.com","iphone","blackberry" }; 

在我的示例中,我选择了一个像android调用意图去嵌套Acitivity

4 个答案:

答案 0 :(得分:57)

AutoCompleteTextView中有不同的点击侦听器。

第一种方法是在布局xml中,你可以定义onCLick属性,使用你想要调用的函数,在下面的例子中,单击。

<AutoCompleteTextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/spinner"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:onClick="clicked" />

然后,在您的活动中,您定义单击的功能。

public void clicked(View v) { 
  // on click do ..
} 

或者您可以直接在代码中设置它:

ACTV.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        finish();
    }
});

如果要在用户单击下拉列表中的项目时设置单击侦听器,则还有另一种方法 setOnItemClickListener

ACTV.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick (AdapterView<?> parent, View view, int position, long id) {
        //... your stuff
    }
})

当用户使用 setOnItemSelectedListener 实际选择下拉列表中的项目时,您有最后一个选项来设置点击侦听器。

ACTV.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected (AdapterView<?> parent, View view, int position, long id) {
        //... your stuff
    }
    @Override
    public void onNothingSelected (AdapterView<?> parent) {
        //... your stuff
    }
})

参考文献:

http://developer.android.com/reference/android/widget/AutoCompleteTextView.html

祝你好运!

答案 1 :(得分:2)

您需要创建自定义适配器并将OnClick事件分配给getView()中的视图

答案 2 :(得分:0)

这对我来说很完美

Actvl.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected (AdapterView<?> parent, View view, int position, long id) {
        //... your stuff
    }
    @Override
    public void onNothingSelected (AdapterView<?> parent) {
        //... your stuff
    }
});

答案 3 :(得分:0)

创建一个自定义适配器,并在该 getView() 方法中放置 setonclicklistenerforeach 视图并调用接口方法。

覆盖片段中的接口并将其传递给适配器,以便点击您将获得片段中的点击。

// Via sprintf
// Good compilers will emit efficient code 
//   and not perform the usual parsing overhead of *printf format at run time
char *concatStrings_alt1(const char *arg1, const char *arg2) {
  char *ret = malloc(strlen(arg1) + strlen(arg2) + 1);
  sprintf(ret, "%s%s", arg1, arg2);
  return ret;
}

// Via memcpy
char *concatStrings_alt2(const char *arg1, const char *arg2) {
  size_t len1 = strlen(arg1);
  size_t size2 = strlen(arg2) + 1;
  char *ret = malloc(len1 + size2);
  memcpy(ret, arg1, len1);
  memcpy(ret + len1, arg2, size2);
  return ret;
}

这将在每种情况下都能如您所愿。

如果您有任何建议,请告诉我,谢谢。