1.直接上代码
private Mapmap=new HashMap<>();// 存放已被选中的CheckBox @Override public View getView(final int position, View convertView, ViewGroup parent) { final ViewHolder viewHolder; getItem(position); if (convertView==null){ viewHolder=new ViewHolder(); convertView= LinearLayout.inflate(context, R.layout.list_item, null); viewHolder.text=convertView.findViewById(R.id.tv); viewHolder.checkbox=convertView.findViewById(R.id.checkbox); convertView.setTag(viewHolder); }else { viewHolder = (ViewHolder) convertView.getTag(); } //最主要的就是这个存储和下面的那个判断 viewHolder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked==true){ map.put(position,true); }else { map.remove(position); } } }); //没错你看到了 就是这个 if(map!=null&&map.containsKey(position)){ viewHolder.checkbox.setChecked(true); }else { viewHolder.checkbox.setChecked(false); } viewHolder.text.setText(str.get(position)); return convertView; } static class ViewHolder { TextView text; CheckBox checkbox; }