这是由于gerview 的 Recycler 原理。详情参考以下link
http://www.cnblogs.com/xiaowenji/articles/1900579.html==============================================
publicView getView(int position, View convertView, ViewGroup parent){
ViewHolder holder;
if(convertView ==null){
convertView = mInflater.inflate(R.layout.list_item_icon_text, null);
holder =new ViewHolder();
holder.c=(TextView) convertView.findViewById(R.id.check);
convertView.setTag(holder);
}else{
holder =(ViewHolder) convertView.getTag();
}
c.setcheck(false)
return convertView;
}
 
staticclass ViewHolder {
Checkbox  c;
}
===============
大体的代码思路是这样,有bug的话自己修修就行了。
有任何错误 仅供参考

解决方案 »

  1.   

    我加了 c.setcheck(false) 这句之后 每次重新显示都未选中了,怎么将选中保存
      

  2.   

    用position 位置判断:
    if (posion ==0) //这是一个简单的逻辑判断,复杂的你自己把这判断逻辑改一下就行了
    {
    c.setcheck(true);
    }
    else{
    c.setcheck(fasle);
    }当然这样写有点绝对 ,具体的哪个checkbox 需要设置成true和false需要根据你的逻辑来判断了。我不知道你要的具体要求怎么样。
      

  3.   

    你可以把你所有选中的checkbox的位置记录下来,然后再getview里面 根据每个不同的位置设置不同的值。
    if (select.contain(new integer(postion))) //select 是一个集合,里面放着所有选中checkbox 的位置
    {
    c.setcheck(true);
    }
    else
    {
    c.setcheck(fasle);
    }
    方法很多 你也可以自己考虑下
      

  4.   

    楼上的方法不可行
    if (posion ==0) 
    你在别的项中修改别的项是办不到的 c.setcheck(fasle);更不行了控件ID都是一个。在listview中设置了又要重新读取的楼主我遇到了这个问题,我的解决方案是。数据存入数据库添加一条数据int int =1就是c.setcheck(fasle)int=2就是c.setcheck(true);
    每次选checkbox的时候你给他个事件重新读取数据库就可以了,这个绝对可以。。
      

  5.   

    我以前也碰到过这种情况,不过是把每个checkbox的值保存在一个数组中,初始化数组时按序保存checkbox的值
      

  6.   

    把1楼的代码改成:
    publicView getView(int position, View convertView, ViewGroup parent){
    ViewHolder holder;
    convertView = mInflater.inflate(R.layout.list_item_icon_text, null);
    holder =new ViewHolder();
    holder.c=(TextView) convertView.findViewById(R.id.check);
    c.setOnCheckedChangeListener(new OnCheckedChangeListener(){ public void onCheckedChanged(CompoundButton buttonView,
    boolean isChecked) {
    if(isChecked){
    buttonView.setChecked(false);
    }else{
    buttonView.setChecked(true);
    }
    }

    });
    convertView.setTag(holder);
    return convertView;
    }
     
    staticclass ViewHolder {
    Checkbox c;
    }