【发布时间】:2015-12-29 07:10:04
【问题描述】:
这是我的适配器类 再次打开应用程序时,我必须再次选中复选框单击,我的数据已正确保存在首选项中,并且也进行了很好的比较,但问题是它没有显示在 for 循环内的复选框上选中,任何帮助都会得到帮助
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
//getting sharedpreference DATa here
animals = PoJo.readList(context, "savingkeyforcheckbox");
final RecordHolder holder;
view = convertView;
mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (view == null) {
view = mInflater.inflate(R.layout.items, parent, false);
holder = new RecordHolder();
holder.icon = (ImageView) view.findViewById(R.id.icon);
holder.packagename = (TextView) view.findViewById(R.id.packagename);
holder.clickpackage_checkbox = (CheckBox) view
.findViewById(R.id.clickpackage_checkbox);
view.setTag(holder);
} else {
holder = (RecordHolder) view.getTag();
}
holder.clickpackage_checkbox.setId(position);
holder.packagename.setId(position);
item = getItem(position);
if (animals.size() > 0) {
for (int i = 0; i < animals.size(); i++) {
if (animals.get(i).equalsIgnoreCase(item.getLabel())) {
Log.e("do check here", "CHECK");
holder.clickpackage_checkbox.setChecked(true);
} else {
holder.clickpackage_checkbox.setChecked(false);
}
}
} else {
holder.clickpackage_checkbox.setChecked(false);
}
if (booleanArray.get(position)) {
holder.clickpackage_checkbox.setChecked(true);
item.setChecked(true);
} else {
holder.clickpackage_checkbox.setChecked(false);
item.setChecked(false);
}
holder.packagename.setText(item.getLabel());
Drawable icons = Utilities.createIconThumbnail(item.getIcon(), context);
holder.icon.setImageDrawable(icons);
holder.clickpackage_checkbox.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (holder.clickpackage_checkbox.isChecked()) {
booleanArray.put(position, true);
selecteditems.add(listofitems.get(position).getLabel());
} else {
booleanArray.put(position, false);
selecteditems.remove(listofitems.get(position).getLabel());
}
}
});
//POJO IS MODEL CLASS AND SAVING PREFERENCES OF ITEMS IN WRITELIST
PoJo.writeList(context, selecteditems, "savingkeyforcheckbox");
SelectedAdapter.this.notifyDataSetChanged();
return view;
}
【问题讨论】:
-
您可以使用共享偏好来保存状态,并在打开应用时检索状态并将它们设置为您的复选框。
-
是否进入if条件?我的意思是它会打印出“在这里检查:检查”吗?
-
在那之后您是否尝试过将
Log.e("do check here", "UNCHECK")置于else 条件下?else { Log.e("do check here", "UNCHECK"); holder.clickpackage_checkbox.setChecked(false); } -
@denis_lor ya denis 我做了但是在添加这个时它取消了我所有的复选框
-
我知道错误是因为使用下面的代码重新创建视图,但我不知道如何解决这个问题请帮助 booleanarray is SparseBooleanArray if (booleanArray.get(position)) { holder.clickpackage_checkbox.setChecked (真的); } else { holder.clickpackage_checkbox.setChecked(false); }
标签: android