У меня есть куча элементов в ListView. Каждый элемент содержит несколько редактируемых видов. Я хочу сохранить изменения, внесенные пользователем. Событие для сохранения происходит, когда элемент теряет фокус.OnItemSelectedListener, ListView и переработка предметов
В настоящее время я вижу 2 пути:
View.OnFocusChangeListener() with onFocusChange(View v, boolean hasFocus)
Это работает, но это неаккуратно, так как каждый элемент содержит несколько редактируемых представлений. Я бы скорее сэкономил, когда весь предмет расфокусирован. Мои попытки упростить до сих пор имеют только сложные вещи.
Если был OnItemDeSelectedListener это было бы прекрасно, но есть только наоборот:
AdapterView.OnItemSelectedListener() with onItemSelected(AdapterView<?> adapterView, View view, int i, long l)
На поверхности это выглядит хорошо. Я просто создаю переменную lastSelectedView, поэтому я знаю, что было последним выбранным (отмененным) элементом. Проблема в том, как ListView перерабатывает представления. Я считаю, что нет гарантии, что адаптер не переработал lastSelectedView и, таким образом, изменил содержащиеся в нем данные. Это разумное предположение?
Есть ли разумный способ обойти проблему переработки с помощью OnItemSelectedListener?
Почему вы сохраняете вид, который был последним изменен вместо базовой модели? Вероятно, вы должны обновлять данные в адаптере своего списка после каждой модификации. Или, поскольку вы хотите сделать это при смене фокуса элемента, создайте локальную копию типа данных, который удерживает адаптер, но не вид. – mpellegr
Хм ... Спасибо за это. Ты помог мне понять мою ошибку. Причина, по которой OnItemDeSelectedListener отсутствует, заключается в том, что элемент списка (с использованием рекомендуемой реализации адаптера) получает рециркуляцию, как только он отключается, независимо от того, выбран ли элемент или нет. Я отправлю свое решение после того, как смогу выполнить свои требования. – Ian
Я думаю, что причина не в том, что прослушиватель не выбран, потому что на самом деле нет общего способа обработки отклонений для нескольких и одиночных режимов выбора. – mpellegr