【发布时间】:2016-10-08 03:00:22
【问题描述】:
我正在创建一个包含项目的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 时才检查checkbox 视图。如果值为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 保存来自数据库的数据并通知 recyclerview 适配器。在adapter的onBIndView()处根据hashmap中的数据勾选checkbox。
-
@Malith Lakshan 我会尝试使用哈希图。
-
请显示哪个类和方法包含代码sn-p。
-
我现在已经弄清楚了。我不太确定整个
HashMap<>的事情。所有的代码都在上面。它在代码的第二部分onBindViewHolder函数中。我很乐意接受更多建议。 -
随意编辑您的问题以显示包含的类和方法。这将有助于使您的问题更清楚。至于答案,我会尽快发布。
标签: android android-studio android-recyclerview android-checkbox