AutoCompleteTextView 项目选择触发事件

Posted

技术标签:

【中文标题】AutoCompleteTextView 项目选择触发事件【英文标题】:AutoCompleteTextView Item selection trigger event 【发布时间】:2021-06-27 20:04:06 【问题描述】:

我希望在从 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);

【问题讨论】:

【参考方案1】:

使用 setOnItemClickListener 监听器:

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

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

当您选择弹出窗口中的项目时,您可以检查code,调用OnItemClickListener 接口。

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

以上是关于AutoCompleteTextView 项目选择触发事件的主要内容,如果未能解决你的问题,请参考以下文章

AutoCompleteTextView搭配PoiSearch的使用

AutocompleteTextView 建议总是选择建议中的第一项

AutoCompleteTextView onItemClick 使用 HashMap 的项目位置或 id

如何在 AutoCompleteTextView 中定位光标

AutoCompleteTextView - 我正在使用autocompletetextview,它显示来自API的值(返回名称和代码)

AutoCompleteTextView 的自定义过滤器在单击时返回错误的字符串