加载时检查RecyclerView中的CheckBox
作者:互联网
我正在创建一个包含项目的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);
}
}
我希望仅在数据库的列中的某个值等于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();
该代码有效,但是它检查数据库中的第一行,如果被检查的列为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和已检查状态.
标签:android-checkbox,android-recyclerview,android-studio,android 来源: https://codeday.me/bug/20191118/2029070.html