Сохранение состояния переключателя и повторное заполнение состояния

У меня есть собственный 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) Для поддержания радиостанции, когда пользователь нажимает на радиокнопку в соответствии с этой строкой обновления в базе данных с этим идентификатором.

Другие вопросы по тегам