Здравствуйте.
Столкнулся вот с какой проблемой.
Есть ListView с SimpleCursorAdapter. Вместо TextView поставил EditText. Все красиво отображается. Но вот беда, если в одной ячейке изменить текст, а потом перейти в другую ячейку, то соответственно вызывается метод Redraw (может он и по другому называется, короче перерисовка) и в отредактированной ячейке выводится старое значение. Подозреваю, что это происходит из-за того что в cursor не записалось новое значение.
Я знаю путь, по которому надо идти: перехватить потерю фокуса данной ячейкой и занести в cursor новое значение. Только вот вопрос - какое событие для этого использовать?
P.S. вполне вероятно, что это реализуется и указанием какой-то опции. Но я что-то не нашел такого.
Проблема при работе с EditText в ListView
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Проблема при работе с EditText в ListView
setOnFocusChangeListener
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Проблема при работе с EditText в ListView
Отлично. Уже сделал. Но вот беда, а дальше то что делать? В сам курсор данные же не занесешь... Делать это через апдейт базы и последующий запрос для получения нового курсора тоже не выход. Я не хочу чтобы именно в этот момент менялись данные в базе, у меня для этого есть специальная кнопка, по которой все исправленные данные будут занесены в базу.
Может кто подскажет что делать? Не уже ли единственный выход это заносить данные в массивы строк и уже их передавать в адаптер?
Может кто подскажет что делать? Не уже ли единственный выход это заносить данные в массивы строк и уже их передавать в адаптер?
Re: Проблема при работе с EditText в ListView
К сожалению вариант с SimpleAdapter тоже не проходит. Все равно при перерисовке выводится первоначальное значение. А хотелось бы, чтобы осталось измененное.
Не уже ли нужно свой адаптер городить?
Не уже ли нужно свой адаптер городить?
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Проблема при работе с EditText в ListView
SimpleAdapter наоборот должен подходить. При потере фокуса изменяем значения в ArrayList, а при нажатии на кнопку сохранить переписываем все из ArrayList в базу.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Проблема при работе с EditText в ListView
Упорный поиск в интернет привел к неутешительному выводу - EditText не рекомендуют использовать в ListView в режиме редактирования. При перерисовке теряется введенное значение. onFocusChange для EditText в ListView тоже не рекомендуют использовать, так как в sdk данный момент реализован с ошибками. И якобы даже в официальной документации (сам я не нашел этого) рекомендуют использовать для таких случаев TableLayout.