您需要一个对象来让您的复选框数据保留您的适配器和列表视图。布尔数组的哈希图就足够了。
private HashMap<String, boolean[]> contactMap;
我想您可以将其加载到某些数据库方法或其他东西中,并且如果需要,您可以将人名(例如“Jo”)作为标识符。数组索引将对应于每个列表视图行中出现的复选框。然后在我想象的适配器中CursorAdapter
,你可以有以下内容:
private boolean[] contactObj;
public void setContactObj(boolean[] contactObj) {
this.contactObj = contactObj;
notifyDataSetChanged();
}
public boolean[] getContactObj() {
return contactObj;
}
@Override
public void bindView(View view, Context context, Cursor c) {
final int position = c.getPosition();
final CheckBox cb = (CheckBox) view.findViewById(R.id.checkbox);
cb.setChecked(contactObj[position]);
cb.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (cb.isChecked()) {
contactObj[position] = true;
} else {
contactObj[position] = false ;
}
}
});
}
基本上,您有一个适配器,它只能boolean[]
调整列表视图中的复选框,在单击复选框时修改为 boolean[],然后在您仍然需要它的情况下返回它。