美文网首页
Android中关于在ListView中使用使用RadioGro

Android中关于在ListView中使用使用RadioGro

作者: 3ompact | 来源:发表于2018-09-02 13:45 被阅读0次

    当我们在使用ListView的时候,一般都会在getView()方法里面使用item复用的方式,如下:

    ViweHolder  view = null;
    if(convertView == null){
    ...
    }
    ....
    return convertVew;
    

    当我们在Item有RadioGroup控件 ,或是需要有其他条件来判断当前Item是否需要展示一个或多个控件,当我们随意滑动ListView你会发现本来不满足条件的Item也显示出控件或者是错位等情况。这就是由于复用导致的,解决方式有两种:1、不使用item的复用,2、使用一个HashMap来保存position于数据之间的关系。

    //这里以RadioButon为例
    public class RadioAdapter extends BaseAdapter {
    Map map = new HashMap<Integer,Integer>();
    
        @Override
        public int getCount() {
            return 0;
        }
    
        @Override
        public Object getItem(int position) {
            return null;
        }
    
        @Override
        public long getItemId(int position) {
            return 0;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
          VIewHolder vh = null;
          if(convertView == null){
          convertView  = LayoutInflater.from(parent.getContext()).inflate(R.layout.radioItem,parent,false);
           holder = createViewHolder(convertView);
           convertView.setTag(holder);
    }else{
        vh = convertView.getTag();
    }
    
          vh.radioButton.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(RadioGroup group, int checkedId) {
                    swicth(checkedId){
                      case R.id.x:
                        map.put(position,checkedId);
                        break;
                       case R.id.y:
                        map.put(position,checkedId);
                        break;
                    }
                }
            });
    
      if(map.containsKey(position)){
         if(map.get(position) == R.id.x){
          vh.rbx.setChecked(true);
          }else if(map.get(position) == R.id.y){
           vh.rby.setChecked(true);      
        }
      }else{
         
      }
    
    
            return convertView;
        }
    }
    
    
    

    相关文章

      网友评论

          本文标题:Android中关于在ListView中使用使用RadioGro

          本文链接:https://www.haomeiwen.com/subject/hycmwftx.html