在RecyclerView中保留CheckBox状态,该状态由SQL数据库提供

时间:2019-04-20 17:27:57

标签: android checkbox android-recyclerview state

大家晚上好

简要概述,然后再进行详细解释。我目前有一个SQL数据库,由于使用了模式,它可以将其输入到arraylist中,然后将其输入到回收视图适配器中,然后填充该行。

现在,我正在尝试为用户建立选择行的选项,然后检查变为true并显示刻度。大家目前都知道,如果状态未存储,那么状态将开始移至随机行或被完全删除。

让我们从我的SQL Lite数据库开始。三个简单的行Title,Description和复选框状态。请注意,当将新行添加到sql时,其复选框列将自动设置为false。

以下用于填充我的recyclerView适配器的SQL查询的代码段

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 DB的行更新为true,因为这将保存状态,但是如果用户关闭然后再次打开该应用程序,则我希望它们每次都取消选中/为false < / p>

只是在寻找解决此问题的另一种方法。

谢谢

1 个答案:

答案 0 :(得分:0)

我想我会输入解决问题的当前方式。

现在,当用户单击复选框时,它将更新SQL为true或false,并且由于我希望在重新打开应用程序时所有结果均为false,因此我实现了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;
}