java - 不要在项目单击时将文本值设置为 AutoCompleteTextView

标签 java android kotlin

我的屏幕上有一个 AutocompleteTextView。默认情况下,当用户点击 autocompletetextviews 下拉项的一个项目时,它会将这个 autocompletetextview 的文本设置为这个选择的项目值。

有什么办法可以取消吗?那么当用户点击下拉项时,只有 onItemClickListener 被触发?

onItemClickListener 中将值设置为“”不是一个选项。

autoCompleteTextView.setOnItemClickListener { adapterView, view, i, l -> 
    autoCompleteTextView.setText("")
}

因为我需要不触发我的 TextWatcher

最佳答案

AutoCompleteTextView使用此类来检测对其下拉菜单的点击:

private class DropDownItemClickListener implements AdapterView.OnItemClickListener {
    public void onItemClick(AdapterView parent, View v, int position, long id) {
        performCompletion(v, position, id);
    }
}

在那里面performCompletion()方法,有这个调用来实际改变 TextView 的内容:

replaceText(convertSelectionToString(selectedItem));

replaceText()方法是 protected ,这意味着您可以创建 AutoCompleteTextView 的子类并重写它什么都不做:

public class MyAutoCompleteTextView extends AppCompatAutoCompleteTextView {

    public MyAutoCompleteTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void replaceText(CharSequence text) {
        // do nothing
    }
}

现在只需替换​​您的 <AutoCompleteTextView>带有 <com.example.yourprojecthere.MyAutoCompleteTextView> 的标签标签,您应该已经准备就绪。

关于java - 不要在项目单击时将文本值设置为 AutoCompleteTextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52931916/

相关文章:

java - 在运行时将 String 转换为正确的 avro 类型

java - 来自大量填充的 HashMap 的 CSV 输出

java - 正则表达式检查字符串是否包含 '1-n' 整数,然后包含 '0-m' 字母

java - 如何在 Spring 框架上使用抽象类?

android - 精确控制 Android 的 VectorDrawable 动画

java - Gradle 仅为公共(public)接口(interface)生成 sources.jar

java - 在哪里设置向导页面的焦点?

android - 如何将参数从 Flutter 传递给 Kotlin?

java - 安卓开发 : Custom Radio Buttons with Text?

java - ARCore中,如何让节点/ anchor 粘在相机上?