Не устанавливайте текстовое значение в AutoCompleteTextView при щелчке элемента - PullRequest
0 голосов
/ 22 октября 2018

У меня есть AutocompleteTextView на моем экране.По умолчанию, когда пользователь щелкает элемент раскрывающегося элемента autocompletetextviews, он устанавливает для текста этого autocompletetextview значение выбранного элемента.

Есть ли способ отключить это?Поэтому, когда пользователь нажимает на выпадающий элемент, только onItemClickListener срабатывает?

Установка значения "" в onItemClickListener не вариант.

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

Как мне нужно, мой TextWatcher чтобы не срабатывать

1 Ответ

0 голосов
/ 22 октября 2018

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> тегов, и вы должны быть все в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...