簡體   English   中英

不要在項目單擊時將文本值設置為AutoCompleteTextView

[英]Don't set text value to AutoCompleteTextView on item click

我的屏幕上有一個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>標記,您<com.example.yourprojecthere.MyAutoCompleteTextView>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM