Страница 1 из 1

Проблема при работе с EditText в ListView

Добавлено: 18 июн 2012, 15:50
Milker
Здравствуйте.
Столкнулся вот с какой проблемой.
Есть ListView с SimpleCursorAdapter. Вместо TextView поставил EditText. Все красиво отображается. Но вот беда, если в одной ячейке изменить текст, а потом перейти в другую ячейку, то соответственно вызывается метод Redraw (может он и по другому называется, короче перерисовка) и в отредактированной ячейке выводится старое значение. Подозреваю, что это происходит из-за того что в cursor не записалось новое значение.
Я знаю путь, по которому надо идти: перехватить потерю фокуса данной ячейкой и занести в cursor новое значение. Только вот вопрос - какое событие для этого использовать?

P.S. вполне вероятно, что это реализуется и указанием какой-то опции. Но я что-то не нашел такого.

Re: Проблема при работе с EditText в ListView

Добавлено: 19 июн 2012, 14:55
KamiSempai
setOnFocusChangeListener

Re: Проблема при работе с EditText в ListView

Добавлено: 19 июн 2012, 15:41
Milker
Отлично. Уже сделал. Но вот беда, а дальше то что делать? В сам курсор данные же не занесешь... Делать это через апдейт базы и последующий запрос для получения нового курсора тоже не выход. Я не хочу чтобы именно в этот момент менялись данные в базе, у меня для этого есть специальная кнопка, по которой все исправленные данные будут занесены в базу.
Может кто подскажет что делать? Не уже ли единственный выход это заносить данные в массивы строк и уже их передавать в адаптер?

Re: Проблема при работе с EditText в ListView

Добавлено: 19 июн 2012, 23:47
Milker
К сожалению вариант с SimpleAdapter тоже не проходит. Все равно при перерисовке выводится первоначальное значение. А хотелось бы, чтобы осталось измененное. :cry:
Не уже ли нужно свой адаптер городить?

Re: Проблема при работе с EditText в ListView

Добавлено: 20 июн 2012, 12:00
KamiSempai
SimpleAdapter наоборот должен подходить. При потере фокуса изменяем значения в ArrayList, а при нажатии на кнопку сохранить переписываем все из ArrayList в базу.

Re: Проблема при работе с EditText в ListView

Добавлено: 21 июн 2012, 08:41
Milker
Упорный поиск в интернет привел к неутешительному выводу - EditText не рекомендуют использовать в ListView в режиме редактирования. При перерисовке теряется введенное значение. onFocusChange для EditText в ListView тоже не рекомендуют использовать, так как в sdk данный момент реализован с ошибками. И якобы даже в официальной документации (сам я не нашел этого) рекомендуют использовать для таких случаев TableLayout.