最近在做项目时用到listview中包括checkBox控件,当listview高度超出屏幕执行上下滑屏时之前被选中的checkBox会因为重新加载视图而被置为未选中;解决方法如下:
private Boolean[] isCheck;//解决checkBox回显问题
public ListAdapter(Context ctx,List<Map<String, String>> data){
this.context = ctx;
this.list = data;
isCheck = new Boolean[data.size()];
for(int i=0;i<isCheck.length;i++){
isCheck[i] = false;
}
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
HoldView holdView = null;
if(holdView == null){
holdView = new HoldView();
convertView = LayoutInflater.from(context).inflate(R.layout.export, null);
holdView.tvName = (TextView) convertView.findViewById(R.id.tv_export_name);
holdView.tvPhone = (TextView) convertView.findViewById(R.id.tv_export_phone);
holdView.cBox = (CheckBox) convertView.findViewById(R.id.cb_export_id);
convertView.setTag(holdView);
}else {
holdView = (HoldView) convertView.getTag();
}
holdView.tvName.setText(list.get(position).get("name"));
holdView.tvPhone.setText(list.get(position).get("phone"));
holdView.cBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
cbSelectName.add(list.get(position).get("name"));
cbSelectList.add(list.get(position).get("phone"));
isCheck[position] = true;
}else {
cbSelectName.remove(list.get(position).get("name"));
cbSelectList.remove(list.get(position).get("phone"));
isCheck[position] = false;
}
}
});
holdView.cBox.setChecked(isCheck[position]);
return convertView;
}
class HoldView{
ImageView imageView;
TextView tvName;
TextView tvPhone;
CheckBox cBox;
}
分享到:
相关推荐
service服务器里的广播接收监听,listview动态显示
listview与scrollview冲突问题解决
Scrollview中嵌套ViewPager和ListView常出现的问题: ViewPager如果在Scrollview中使用,并且宽高指定为match_parent或者wrap_content则不会显示内容,但是如果将高度指定为200dp,则ViewPager则会将内容显示到屏幕...
listview+checkbox乱序问题
解决wpf ListView最小列宽问题
C#编程入门,C#中控件(textBox、checkBox、listBox、listView等等)的应用
用过listview和edittext相结合开发时,相信大家都会遇到一个问题:当edit获得焦点输入后,在失去焦点后,内容发生了更改混乱。此demo得到了完美解决。
ListView嵌套ListView带多选,全选,反选,选中数量,之前传过一个,只是上面没数量
andorid listview由于复用控件的问题,再布局上使用checkbox时会造成选中状态错乱的问题,该项目可以解决该问题
解决复杂布局,scrollview嵌套ListView滑动性能的问题,提供下拉刷新和暴露对外操作listview控件UI的方法,同步博文:http://blog.csdn.net/qq_28690547/article/details/50792439
继承继承ScrollView 实现自定义ListView 解决ListView+EditText焦点的问题
ListView嵌套ListView时出现的问题1.子ListView展示一条(方法,重写ListViewListViewInScrollView)2.子LsitView的出现是由点击事件触发的,故存在问题:父ListView某一Item点击出现了子ListView,然后往下滑动时,...
一、问题 listview控件,可以实现增大行距吗?行与行太紧了,不好看呀。 有办法可以实现吗? 我不想通过加大字体的方法,因为字体大了,行距还是近呀。 我要的是增大行间距。 二、解决方法: // // imageList1 //...
限时抢购,倒计时功能、解决listview卡顿,复用问题。
listView嵌套listViewDemo,解决了listView嵌套listView后,子ListView不能显示全部内容的问题,通过自定义Listview解决
Android开发之ListView+EditText焦点问题解决方案.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
ScrollView嵌套ListView,当ListView的顶部到达屏幕顶部时,listView才具有滑动能力,当listView滑动到两端时,会触发ScrollView滑动
解决Scrollview嵌套listview下拉刷新的一些问题
android 解决ScrollView和listView嵌套冲突问题(保证在ScrollView中滑动listView只响应listView的滑动)
listview嵌套listview简单的小案例