AutoCompleteTextView Item选择触发事件

问题描述

我希望在从 AutoCompleteTextView 中选择项目时禁用 TextInputLayout 上的错误

这是关于 AdapterView.OnItemClickListener 的谷歌文档。 https://developer.android.com/reference/android/widget/AdapterView.OnItemClickListener

在我的片段 onCreateView 方法我有

View view = inflater.inflate(R.layout.fragment_currency_picker,container,false);

TextInputLayout mtextInputLayout= view.findViewById(R.id.currencyTIL);

List<String> currenciesAvailable = Arrays.asList(getResources().getStringArray(R.array.currencies_array));

ArrayAdapter adapter = new ArrayAdapter(getContext(),R.layout.dropdown_currency_item,currenciesAvailable);

AutoCompleteTextView autoComplete = view.findViewById(R.id.AutoCompTxtView);
    
autoComplete.setAdapter(adapter);

autoComplete.setonItemSelectedListener(this);

在我的片段中我也实现了

@Override
public void onItemSelected(AdapterView<?> parent,View view,int position,long id) {
    Log.d("TEST","XYZ");
}

@Override
public void onnothingSelected(AdapterView<?> parent) {

}

我似乎无法触发 onItemSelected。最后我想打电话

mtextInputLayout.setErrorEnabled(false);

解决方法

使用 setOnItemClickListener 侦听器:

autoComplete.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView,View view,int position,long id) {
        //do something...
    }
});

由于您使用的是 Material 组件主题,AutoCompleteTextView 在运行时被 MaterialAutoCompleteTextView 替换。

因为您可以在选择 Popup 中的项目时签入 code,所以会调用 OnItemClickListener 接口。

,

当你点击适配器上的一个项目时,它不是一个选择而是一个点击事件

通过在点击监听器上添加 mtextInputLayout.setError(null) 来消除点击项目时的错误:

autoComplete.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent,long id) {
        mtextInputLayout.setError(null);
    }
});

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...