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

时间:2018-10-22 14:37:59

标签: java android kotlin

我的屏幕上有一个AutocompleteTextView。默认情况下,当用户单击autocompletetextviews的下拉菜单项时,会将此autocompletetextview的文本设置为该选定项的值。

有什么方法可以禁用此功能吗?因此,当用户点击下拉菜单项时,仅触发app.post('/customer', (req, res) => { flg.lookup(req.body.id); <---- How do I access what this imported function returns? eg, console.log(result of flg.lookup) res.render('index', {customerEmail:'test5@test5.com'}); }); 吗?

不能在onItemClickListener中将值设置为“”。

onItemClickListener

因为我需要不触发我的autoCompleteTextView.setOnItemClickListener { adapterView, view, i, l -> autoCompleteTextView.setText("") }

1 个答案:

答案 0 :(得分:3)

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>标签,您就应该准备就绪。