Сохранение состояния переключателя и повторное заполнение состояния
У меня есть собственный ArrayAdapter, который заполняется макетом, содержащим переключатель с режимом единого выбора. Мне удалось сохранить элементы, добавленные в ListView, и заново заполнить ListView, когда действие уничтожено, но отмеченные переключатели теряют свое состояние. Поиск в Интернете в течение двух дней с единственным найденным решением - сохранить переключатель с помощью SharedPreference. Вот что я сделал до сих пор, может быть, кто-то может указать мне правильное направление. Благодарю.
Код:- Я использовал setOnItemClickListener()
захватить элемент и переключатель в списке просмотра, чтобы сохранить, но не может выяснить, как повторно заполнить проверенную радиокнопку из общего предпочтения, если это действительно правильный путь.
Код метода OnCreate():-
ListView sist = (ListView) findViewById(R.id.list);
adapter = new SAdapter(this, populateArrayList());
sList.setOnItemClickListener(itemListener);
sList.setAdapter(adapter);
Код onItemClickListener:-
private AdapterView.OnItemClickListener itemListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
for (int i= 0; i < parent.getCount(); i++) {
view = parent.getChildAt(i);
RadioButton s_rb = (RadioButton) view.findViewById(R.id.s_rdb);
int checkedState = s_rb.isChecked() ? 1 : 0;
saveState(s_rb.getId(), checkedState);
}
}
};
Код, который добавляет элемент в адаптер и базу данных:-
InfoHelper helper = new InfoHelper(Number_et.getText().toString(),messageBody_et.getText().toString());
adapter.add(helper);
insertInfoToDB(helper);
Мой вопрос заключается в том, как сохранить состояние переключателя, если список ранее обновлялся из базы данных. Можно указать больше кодов, если этого недостаточно.
1 ответ
1) Для этого вам необходимо создать одну таблицу в базе данных, в которой будут храниться все данные, связанные с радиокнопками, например текст радиокнопки, а также один уникальный идентификатор для данных и один логический флаг для каждой строки, в которой хранится состояние радиокнопки.
2) вы можете получить все данные из базы данных в arraylist и установить их для адаптера.
3) Для поддержания радиостанции, когда пользователь нажимает на радиокнопку в соответствии с этой строкой обновления в базе данных с этим идентификатором.