2017-05-06 61 views
0

我使用膨脹列表視圖中我有複選框的Android展開列表視圖它改變選定複選框狀態

@Override 
     public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { 
      View view = convertView; 
      ViewHolder holder = new ViewHolder(); 
      if(view == null){ 
       LayoutInflater infalInflater = (LayoutInflater) this._context 
         .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      // convertView = infalInflater.inflate(R.layout.home_activity_lv_sync_adapter, null); 
       view = infalInflater.inflate(R.layout.home_activity_lv_sync_adapter, null); 

       holder.ckupdate = (CheckBox) view.findViewById(R.id.ck_update); 

       view.setTag(holder); 
      } else { 
       holder = (ViewHolder) view.getTag(); 
      } 
      holder.ckupdate.setTag(groupPosition); 
      holder.ckupdate.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

       @Override 
       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

        int position = (Integer) buttonView.getTag(); 
        // objects.get(position).setChecked(buttonView.isChecked()); 
       } 
      }); 
      // holder.ckupdate.setChecked(isChecked(position)); 

      return view; 
     } 

但是當我滾動EXP列表它改變狀態(我沒有從取數據組父級別任何列表或數據庫只是用戶檢和未選中)

在此先感謝

回答

1

也許這個答案爲時已晚,但我認爲這是更簡單的解決方案。只要嘗試每次創建新視圖(刪除檢查如果視圖== null之前)。

相反的:

View view = convertView; 
ViewHolder holder = new ViewHolder(); 
if(view == null){ 
    LayoutInflater infalInflater = (LayoutInflater) this._context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    view = infalInflater.inflate(R.layout.home_activity_lv_sync_adapter, null); 
    holder.ckupdate = (CheckBox) view.findViewById(R.id.ck_update); 
    view.setTag(holder); 
} else { 
    holder = (RecyclerView.ViewHolder) view.getTag(); 
} 

這種嘗試:

View view; 
ViewHolder holder = new ViewHolder(); 
LayoutInflater infalInflater = (LayoutInflater) this._context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
view =infalInflater.inflate(R.layout.home_activity_lv_sync_adapter,null); 
holder.ckupdate =(CheckBox)view.findViewById(R.id.ck_update); 
view.setTag(holder); 

而且,也沒有必要使用持有人的情況父視圖。你可以使用convertView來代替。

0

你好,我按照

holder.ckupdate.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

       @Override 
       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

        int position = (Integer) buttonView.getTag(); 

        if (isChecked) { 
         selectedStrings.add(position + " "); 
         ii.add(position); 
        } else { 
         selectedStrings.remove(position + ""); 
//      ii.remove(position); 
         ii.removeAll(Arrays.asList(position)); 
        } 
        System.out.println("selectedStrings!!!! " + selectedStrings); 
        for(int i=0;i<ii.size();i++) 
        { 
         System.out.println("HERE !! "+ii.get(i)); 
        } 
        // objects.get(position).setChecked(buttonView.isChecked()); 
       } 
      }); 
解決我的問題
相關問題