问题描述
我希望在从 AutoCompleteTextView
中选择项目时禁用 TextInputLayout 上的错误
这是关于 AdapterView.OnItemClickListener 的谷歌文档。 https://developer.android.com/reference/android/widget/AdapterView.OnItemClickListener
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);
}
});