由于ListView中用checkBox的话,然后你又用了ViewHolder的话,当你滑动翻页的,原先已经选中的checkBox的状态被清除了,我们可以用集合来保存相关的信息。
@Override public View getView(final int position, View convertView, ViewGroup parent) { final ViewHolder viewHolder; if (convertView == null) { convertView = LayoutInflater.from(mContext).inflate(R.layout.activity_main_listitem, parent, false); viewHolder = new ViewHolder(); viewHolder.textView = (TextView) convertView.findViewById(R.id.text); viewHolder.checkBox = (CheckBox) convertView.findViewById(R.id.check); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } viewHolder.textView.setText("CheckBox" + getItem(position)); viewHolder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) checkMap.put(position, true); else if (checkMap.indexOfKey(position) >= 0) checkMap.delete(position); } }); if (checkMap.indexOfKey(position) >= 0) { viewHolder.checkBox.setChecked(true); } else viewHolder.checkBox.setChecked(false); return convertView; } private class ViewHolder { public TextView textView; public CheckBox checkBox; }