Я думаю, что вы можете не понимать цель BaseAdapter
. BaseAdapter
-derived классы предназначены для использования в качестве интерфейса между набором данных и AdapterView
, в котором вы отображения информации этого набора данных (и/или взаимодействовать с ним.)
Имея это в виду, я бы думаю, самый простой способ выполнить то, что вы делаете, это отслеживать, проверяется ли элемент, используя boolean
как часть набора данных. Например, если ваш набор данных равен ArrayList<SomeObjectYouMadeUp>
, вы должны добавить член boolean
в SomeObjectYouMadeUp
; установите его во время CheckBox
OnCheckedChangeListener
и используйте его, чтобы определить, должен ли визуально проверяться CheckBox
во время getView()
.
Это может занять некоторое переосмысление вашего кода, но поверьте мне, вы, вероятно, захотите это сделать. Это можно сделать так, как вы описываете, но это будет непросто или надежно; вы захотите получить индивидуальный доступ к каждому видимому виду в своем AdapterView
, используя the method described here, но снова я должен рекомендовать против этого.
Самая большая причина в том, что onSaveInstanceState
встречается чаще всего при изменении конфигурации - например, при повороте экрана. Это означает, что почти наверняка неверное предположение, что вы будете показывать одни и те же представления. Скажем, что в портретной ориентации видны 10 видов и 5 видны в ландшафте. Таким образом, пользователь поворачивается в пейзаж - что мы получаем? Вы точно знаете? Вам нужно будет проверить каждый новый View
на какую-то идентифицирующую информацию, которую вы, вероятно, также должны были оставить в onSaveInstanceState
, - и что делать, если один из новых просмотров не был виден до поворота?
Список вопросов продолжается. Сделайте себе одолжение: сохраните состояние проверки с остальной частью вашего набора данных и дайте Android понять это для вас.
Фактически я работаю над приложением с фиксированной ориентацией, и у меня есть вопрос, сохраняет ли saveinstancesate состояния, которые меня интересуют, и помогает вернуть их в последнее состояние, даже если я закрыл приложение и перезапустил приложение Это? Я хочу, чтобы мой вопрос был ясен. – rmaik
Ваш вопрос ясен, но это не цель 'onSaveInstanceState()'. Вы не можете использовать его для постоянного сохранения данных; существует ряд ситуаций, в которых Android уничтожит действие и воссоздает его из-за изменения конфигурации (например, поворот экрана является примером, но есть много других, например, подключение устройства к доке для автомобилей). В этих ситуациях 'onSaveInstanceState()' используется для передачи данных в воссозданную активность, чтобы сделать переход настолько плавным, насколько это возможно. – sigmabeta
Вы можете найти более подробную информацию о том, почему вы должны использовать 'onSaveInstanceState()' [здесь] (http://developer.android.ком/обучение/Основы/деятельности, жизненный цикл/recreating.html # SaveState). – sigmabeta