项目中遇到的一个问题-checkbox


 模拟下在项目中出现的问题


 
<1>选中3个


 
 
<2>往下滑动


 
<3>网上滑动后,刚才勾选的消失了


 

当时项目的解决方法
设一个MAP用于存方 是否勾选的boolean值。
checkbox是图片做得
在设配器里增加一个全局的map            
public Map<Integer, Boolean> isSelected=new HashMap<Integer, Boolean>();
捕获事件处理,屏蔽了checkbox的事件:lv.setOnItemClickListener(new OnItemClickListener(){
                              @Override
                              public void onItemClick(AdapterView<?> parent, View view,
                              int position, long id) {
                              cb=(CheckBox) view.findViewById(R.id.cb);
                              //切换图片状态,选中或者没选中
                              cb.toggle();
                              //将状态存到map里保存
                              adapter.isSelected.put(position, cb.isChecked());
                        }});
在适配器的处理的方式            :if(isSelected!=null&&isSelected.get(position)!=null){
                             holder.cb.setChecked(isSelected.get(position));
                             }
 
改后效果
<1>

 
<2>下拉后,会发现第二页有3项莫名的被选了


 
<3> 拉回去,0,1,2依旧被勾选了的


 
问题解决了,但是出现了个新的问题,当你勾选了1,2,3,当你向后滚动发现另一个view也莫名奇妙的勾选了

解决方式:

第一种方式
      public View getView(final int position, View convertView, ViewGroup parent) {
            // 去掉下面那句,但是以后就每次会生成新的convertView
            //if(convertView==null)
            convertView=inflater.inflate(R.layout.a,null);
 
第二种方式
         
  boolean flag=false;
            holder.cb.setChecked(flag);
            if(isSelected!=null&&isSelected.get(position)!=null){
                  holder.cb.setChecked(isSelected.get(position));
            }
 

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值