我正在尝试在我的主要活动中而不是在自定义适配器中保存复选框的状态。我已经检查了正确的数据存储在sharedprefs中,并且可以成功检索到信息,但是当我尝试标记打开应用程序时的复选框时,viewholder为null。从理论上讲,我了解问题所在,但不知道如何解决。
这是我遇到的主要活动中的代码部分:
for (int i= 0; i<results.size(); i++) {
result = (Results) customAdapter.getItem(i);
if (result != null) {
String RESULT = result.getTitle();
if (sharedPref.getBoolean(result.getTitle(), false)){
Log.i("Saved", result.getTitle());
CustomAdapter.ViewHolder viewHolder = (CustomAdapter.ViewHolder) listView.getTag(i);
Log.i("viewHolder", String.valueOf(viewHolder));
viewHolder.getCheckBox().setChecked(sharedPref.getBoolean(RESULT, false));
}
}
}
您正在准备将List<Results>
传递给适配器吗?首先在Results
模型类中添加一个额外的布尔变量,以表示复选框的状态。现在,在准备活动清单时,请为首选项中的每个项目设置此新布尔值。这样您的List<Results>
包含复选框的状态。