android - 在由 SQL 数据库提供的 RecyclerView 中保留 CheckBox 状态
问题描述
各位晚上好
在进行更深入的解释之前进行简要概述。我目前有一个 SQL 数据库,它通过模式输入到数组列表中,然后我们将此数组列表输入到我们的回收视图适配器,然后填充该行。
现在我正在尝试为用户构建选项以选择一行,然后检查变为真并显示刻度线。正如你们目前所知,如果状态没有被存储,那么它就会开始移动到随机行或被完全删除。
让我们从我的 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
只是在寻找解决此问题的另一种方法。
谢谢
解决方案
我想我会输入解决问题的当前方式。
现在,当用户单击复选框时,它会将 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;
}
推荐阅读
- c# - C# regex - find one or more matches for a single pattern inside parentheses
- scala - 加特林请求未得到执行
- python - I'm Getting an ApiError while using dropbox as a django storage
- godot - Cant unpause in godot
- r - 聚合并计算 r 中的相同行
- postgresql - Postgres jsonb_object_keys limiting result set
- rust - Rust union 使用特性
- r - R dplyr: Bootstrap or random sampling
- java - 使用 Java ProcessBuilder 运行批处理文件无法识别网络驱动器
- javascript - Identifying unique HTML element without attributes