我正在创建一个RecyclerView
包含物品的物品。每个项目都有一个CheckBox
,ImageButton
以及TextView
作为陈述如下:
public class RecyclerViewViewHolder extends RecyclerView.ViewHolder {
RelativeLayout item;
TextView id;
TextView name;
ImageButton delete;
CheckBox checkBox;
public RecyclerViewViewHolder(View view) {
super(view);
item = (RelativeLayout) view.findViewById(R.id.layout_item_item);
id = (TextView) view.findViewById(R.id.layout_item_id);
name = (TextView) view.findViewById(R.id.layout_item_name);
delete = (ImageButton) view.findViewById(R.id.layout_item_delete);
checkBox = (CheckBox) view.findViewById(R.id.layout_item_checkbox);
}
}
我希望checkbox
仅在数据库的列中的某个值等于时才检查视图1
。如果值为0
,则不应检查。我从下面的代码开始:
SQLiteDatabaseAdapter database = new SQLiteDatabaseAdapter(context);
database.open();
Cursor cursor = database.getAllItems(table);
if (cursor.moveToFirst()) {
do {
if (cursor.getInt(2) == 0) {
viewHolder.checkBox.setChecked(false);
}
else {
viewHolder.checkBox.setChecked(true);
}
} while (cursor.moveToNext());
}
database.close();
此代码的工作,但它会检查第一行中的数据库,如果该checked
列是1
,它改变了每一个CheckBox
进行检查。我只希望CheckBox
检查与某一特定行相关联的内容,而不是每一行。我该怎么做呢?
我建议您创建一个HashMap<>
并链接ID和已检查状态。然后,您可以从参考HashMap<>
并获取已检查的状态。
HashMap<Integer, Integer> hashMap = new HashMap<Integer, Integer>();
然后,在您的onBindViewHolder
函数中,可以使用以下命令进行检查CheckBox
:
if (hashMap.get(position) == 0) {
// not checked
}
else {
// checked
}
确保从SQLite数据库添加ID和已检查状态。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句