在由 SQL 数据库馈送的回收器视图中保留复选框状态



大家晚上好

在进行更深入的解释之前,先简要概述。我目前有一个SQL数据库,它通过模态馈送到数组列表中,然后我们将这个arraylist提供给我们的回收视图适配器,然后填充该行。

现在我正在尝试为用户构建选项以选择一行,然后检查变为真并显示勾号。正如你们目前所知,如果状态未存储,那么它就会开始移动到随机行或被完全删除。

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

用于填充我的回收器视图适配器的 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

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

谢谢

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

现在,当用户单击复选框时,它将更新 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;
}

最新更新