在你 ListAdapter 创建一个 SparseBooleanArray
private SparseBooleanArray checkStatus;
此 SparseBooleanArray 存储选中的项目。现在在 getView 中执行以下操作
@Override
public View getView(int position, View view, ViewGroup parent) {
ViewCache viewCache;
if (view == null){
viewCache = new ViewCache();
view = layoutInflater.inflate(R.layout.list_box, null, false);
viewCache.checkBox = view.findViewById(R.id.check_box);
viewCache.checkBox.setOnCheckedChangeListener(onCheckedChangeListener);
//other views in the list box
...........
}
vewCache = (ViewCache)view.getTag();
viewCache.checkBox.setTag(position);
viewCache.checkBox.setChecked(isChecked(position));
//set other views
........
}
这是 ViewCache 类
private static class ViewCache{
CheckBox checkBox;
//other views in the list box
.......
}
该方法检查位置是否被检查
private boolean isChecked(int position){
return checkStatus.get(position, false);
}
这是 onCheckChangeListener
CompoundButton.OnCheckedChangeListener onCheckedChangeListener = new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
checkStatus.put(((Integer)compoundButton.getTag()), b);
}
};
最后,您可以从 SparseBooleanArray checkStatus 中获取选中的项目。认为它会帮助你。