Сохранение состояния CheckBox в RecyclerView, которое подается базой данных SQL - PullRequest
0 голосов
/ 20 апреля 2019

Добрый вечер всем

Краткий обзор перед подробным объяснением.В настоящее время у меня есть база данных SQL, которая поступает в массив списков благодаря модальности, затем мы передаем этот массив списков в наш адаптер представления рециркуляции, который затем заполняет строку.

Теперь я пытаюсь встроить опцию для пользователя, чтобы выбрать строку, а затем проверка становится истинной, и отображается галочка.Как вы все в настоящее время знаете, если состояние не сохраняется, оно начинает перемещаться в случайные строки или полностью удаляется.

Давайте начнем с моей базы данных SQL Lite.Три простых строки Название, Описание и Флажок.Обратите внимание, что при добавлении новой строки в столбец флажка sql он автоматически устанавливается значение false.

Фрагмент ниже SQL-запроса, используемого для заполнения моего адаптера recyclerView

ArrayList<NoteInfoModal> noteInfoModalArrayList = new ArrayList<>();
    SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
    Cursor cursor =  sqLiteDatabase.rawQuery("SELECT * FROM " + Primary_Table + " ORDER BY Col_DateOrder ASC",   null);
    cursor.moveToFirst();


    while (!cursor.isAfterLast()){

        NoteInfoModal noteInfoModal = new NoteInfoModal();
        noteInfoModal.setNoteName(cursor.getString(cursor.getColumnIndex(Col_NoteTitle)));

Применение его кАдаптер

homeScreenAdapter = new HomeScreenAdapter(getContext(), primaryDatabase.populateHomeScreenOldestFirst(), filterOption, HomeScreenFragment.this);

Наконец, привязка информации внутри адаптера к правильному представлению (это для флажка)

((CustomViewHolder) holder).chkNote.setChecked(Boolean.valueOf(noteInfoModal.noteCheckBox));

Теперь я понимаю, что я мог бы просто обновить строкубазы данных SQL будет иметь значение true, поскольку это затем сохранит состояние, но если пользователь закрывает, а затем снова открывает приложение, я хочу, чтобы все они не проверялись / ложные каждый раз

Просто ищу другой способ приблизиться к этомувыпуск.

спасибо

1 Ответ

0 голосов
/ 20 апреля 2019

Я думал, что введу текущий способ, которым я решил проблему.

Теперь, когда пользователь нажимает флажок, он обновляет SQL, чтобы он становился истинным или ложным, и потому что я хочу, чтобы все результатыбыть ложным при повторном открытии приложения Я реализовал небольшой раздел кода SQL Lite, в котором для меня будет установлен столбец false.

public boolean checkboxStateColumn ()
{
    SQLiteDatabase db = this.getReadableDatabase();
    ContentValues args = new ContentValues();
    args.put(Col_CheckedRow, "false");

    int i =  db.update(Primary_Table, args, Col_CheckedRow + "=" + Col_CheckedRow , null);
    return i > 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...