[英]How to check a checkbox if it is checked prevoiusly
我已经实现了列表中的复选框,有一个带有复选框的名称。 我的问题是,我将选择五个名称并显示这些名称,此后,如果我返回列表,则应再次检查这五个名称,因为我已经选择了这些名称。
但是现在,当我重新访问时,这些都没有被选中 。 如何实现这一目标。
我的适配器代码。
holder.UserId_Fk.setText(tempValues.getUserId_Fk().toString());
holder.chkbox.setOnCheckedChangeListener(null);
holder.chkbox.setChecked(checkedHolder[position]);
Log.i(TAG, "Position " + checkedHolder[position]);
if (checkedHolder[position])
holder.chkbox.setChecked(true);
else
holder.chkbox.setChecked(false);
holder.chkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
checkedHolder[position] = isChecked;
Log.i(TAG, "Position " + checkedHolder[position]);
}
});
我的活动代码..
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
CheckBox cb = (CheckBox) view.findViewById(R.id.chkbox);
cb.performClick();
if (cb.isChecked()) {
for (int i = 0; i < adapter.getCount(); i++) {
if (adapter.checkedHolder[i]) {
// get all name values that checked by user
MemberName.clear();
MemberName.add(ItemsArr.get(i).getItemName().toString());
cb.setChecked(true);
Log.i(TAG, "Name " + MemberName);
// Name = ItemsArr.get(i).getItemName().toString();
//Log.i(TAG, "Name " + Name);
}
}
} else if (!cb.isChecked()) {
}
}
});
除非将状态存储在某个位置,否则每次返回列表时,它将被视为新实例。 结果,所有框都将恢复为未选中状态。
当您离开列表时,将检查的值保存到某种持久性存储(例如设备存储)中,或将框的状态传递到您要访问的屏幕,以便在导航时可以将其传递回列表背部。 或者将它们保存到具有全局范围的变量,并且在移动屏幕时不会超出范围。
当您返回列表时,请查看是否存在要使用的状态(在设备存储中,作为参数传递或使用任何持久性方式),然后使用它重新检查相应的框。
尝试这个。 我已经编辑了您的代码
private static Map<Integer, Boolean> mapCheck = new HashMap<Integer, Boolean>();
holder.UserId_Fk.setText(tempValues.getUserId_Fk().toString());
holder.chkbox.setOnCheckedChangeListener(null);
holder.chkbox.setChecked(checkedHolder[position]);
Log.i(TAG, "Position " + checkedHolder[position]);
if (checkedHolder[position])
holder.chkbox.setChecked(true);
else
holder.chkbox.setChecked(false);
holder.chkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
mapCheck.put(position, true);
checkedHolder[position] = isChecked;
Log.i(TAG, "Position " + checkedHolder[position]);
}
});
和这个:
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
CheckBox cb = (CheckBox) view.findViewById(R.id.chkbox);
cb.performClick();
if (cb.isChecked()) {
/*
for (int i = 0; i < adapter.getCount(); i++) {
if (adapter.checkedHolder[i]) {
// get all name values that checked by user
MemberName.clear();
MemberName.add(ItemsArr.get(i).getItemName().toString());
cb.setChecked(true);
Log.i(TAG, "Name " + MemberName);
// Name = ItemsArr.get(i).getItemName().toString();
//Log.i(TAG, "Name " + Name);
} */
//SEARCH POSITION WHERE ARE TRUE
for(Integer i : mapCheck.keySet())
{
if(mapCheck.get(i) == true)
{
cb.setChecked(true);
}
}
}
} else if (!cb.isChecked()) {
}
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.