Android中ListView包含CheckBox时滑动丢失选中状态的解决
publicclassTestAdapterextendsArrayAdapter<String>{
privateintresource;
privateLayoutInflaterinflater;
privateboolean[]checks;//用于保存checkBox的选择状态
publicTestAdapter(Contextcontext,intresource,List<String>list){
super(context,resource,list);
checks=newboolean[list.size()];
this.resource=resource;
inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
ViewHolderholder=null;
if(convertView==null){
convertView=inflater.inflate(resource,null);
holder=newViewHolder();
holder.title=(TextView)convertView.findViewById(R.id.title);
holder.checkBox=(CheckBox)convertView.findViewById(R.id.checkBox);
convertView.setTag(holder);
}else{
holder=(ViewHolder)convertView.getTag();
}
holder.title.setText(getItem(position));
finalintpos=position;//pos必须声明为final
holder.checkBox.setOnCheckedChangeListener(newCompoundButton.OnCheckedChangeListener(){
@Override
publicvoidonCheckedChanged(CompoundButtonbuttonView,booleanisChecked){
checks[pos]=isChecked;
}});
holder.checkBox.setChecked(checks[pos]);
returnconvertView;
}
staticclassViewHolder{
TextViewtitle;
CheckBoxcheckBox;
}
}
更多相关文章
- Android中判断当前网络是否可用
- android 全透明式状态栏
- Android(安卓)下网络状态监听
- Android(安卓)完全隐藏状态栏方法
- 【Android】解决修改状态栏颜色不生效的问题(6.0以上)
- android studio 权限类,不断更新中 如果你有权限我这边没有 请告
- Android(安卓)以太网(有线网络)开关和状态的判断
- Android(安卓)MediaPlayer
- Android(安卓)6.0后 apk权限默认开启