AutoCompleteTextView Item 选择触发事件

AutoCompleteTextView Item selection trigger event

我希望在从 AutoCompleteTextView

中选择项目时禁用 TextInputLayout 上的错误

这是关于 AdapterView.OnItemClickListener 的 google 文档。 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(假);

使用setOnItemClickListener监听器:

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

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

正如您可以在 code 中检查的那样,当弹出窗口中的项目被选中时,将调用 OnItemClickListener 界面。

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

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

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