ListView.setItemChecked() в bindView() убирает фокус с EditText, который я только что нажал
У меня есть Edittext и CheckedTextView в элементе списка (макет реализует Checkable). Когда я нажимаю на EditText, метод bindView () CursorAdapter вызывает ListView.setItemChecked() (я делаю это для восстановления CheckMarks, которые, возможно, придется восстанавливать после очистки фильтра). Однако ListView.setItemChecked (), кажется, немедленно убирает фокус (или что-то еще здесь происходит?) Из EditText, который я только что щелкнул, так что теперь я больше не могу использовать EditText.
Есть ли способ вызвать ListView.setItemChecked () внутри bindView () без такого побочного эффекта? Я уже пытался вызвать ListView.setItemChecked () после adaptor.getFilter (). Filter () (за пределами bindView ()), но, похоже, в этом случае новый список элементов пока недоступен, поскольку фильтрация выполняется в фоновом режиме. нить.
Какие-либо предложения?
1 ответ
Нашел ответ: используйте класс FilterListener вот так
adaptor.getFilter().filter("", новый FilterListener() {
@Override
public void onFilterComplete(int count) {
for (int i = 0; i < adapter.getCount(); i++) {
if (selected.contains((int) adapter.getItemId(i)))
listView.setItemChecked(i, true);
}
}
});
РЕДАКТИРОВАТЬ: строго говоря, это не ответ, потому что я до сих пор не знаю, почему setItemChecked не может быть использован в bindView() без взаимодействия с текстом редактирования