Как правильно обрабатывать ввод Android EditText внутри ListView? - PullRequest
3 голосов
/ 03 октября 2010

В моем приложении есть действие по добавлению / удалению / редактированию записей внутри SortedMap. Задание реализовано как расширение ListActivity. Я реализовал пользовательский ArrayAdapter для элементов коллекции.

Каждый элемент ListView (соответствующий базовой записи) состоит из TextView s, EditText s и Button для удаления самой записи. Макет примерно такой:

ListView
----------------------------------------------------
[TextView] [EditText] [TextView] [EditText] [Button]
----------------------------------------------------
[TextView] [EditText] [TextView] [EditText] [Button]

Моя цель - обработать ввод, который пользователь вводит в EditText s, как только пользователь закончит редактирование, т. Е. Когда пользователь отошел от EditText или пользователь нажал назад, чтобы закрыть экранную клавиатуру ,

Я пытался реализовать это, обрабатывая onFocusChanged, чтобы обработать текст, видимый в EditText. Однако этот метод не работает, метод onFocusChanged вызывается очень часто и случайным образом, даже для невыбранных и неотредактированных EditText с. Вероятно, это связано с этой статьей в блоге Android из этого вопроса StackOverflow .

Есть ли лучший способ сделать это?

1 Ответ

2 голосов
/ 15 января 2011

TextView, который расширяется EditText, включает метод public void addTextChangedListener (TextWatcher watcher), который может быть полезен для вас.

Я не использовал его раньше, но кажется, что он будет вызываться каждый раз, когда пользователь редактирует TextView, и тогда вы можете обрабатывать его каждый раз, когда он изменяется. Это может привести к большим накладным расходам, если он вызывается каждый раз, когда пользователь удаляет или добавляет символ, но это может быть самым простым решением.

...