2015-03-03 69 views
1

在我ExpandableListview,我使用ImageviewCheckbox類似形狀的圖像和名稱,控制複選框中ExpandableListview的Android

當我打勾特定子項的checkbox,其他子項也被選中,滾動後檢查狀態改變,

我需要多個值來選擇。

請幫我解決這個問題

在此先感謝。

public View getChildView(int groupPosition, final int childPosition, 
      boolean isLastChild, View convertView, ViewGroup parent) { 


_childText = (String) getChild(groupPosition, childPosition);  

int itemType = getChildType(groupPosition,childPosition); 

Log.e("childPosition", "karjeevch "+childPosition); 

ViewHolder viewHolder = null; 
switch (itemType) { 

case 0: 
    viewHolder = null; 
    if (convertView==null) { 
     viewHolder=new ViewHolder();     
     convertView = infalInflater.inflate(R.layout.list_child_shape, null); 
     viewHolder.shape_name = (CheckBox) convertView.findViewById(R.id.shape_chk_box); 
     viewHolder.img_shape_icon=(ImageView)convertView.findViewById(R.id.img_shape); 


     imageLoader.DisplayImage("http://rosycontact.com/shashvat/images/"+_childText+".png", viewHolder.img_shape_icon); 
     viewHolder.shape_name.setText(_childText); 
     convertView.setTag(viewHolder); 


     final CheckBox shape_name_temp=viewHolder.shape_name; 
     viewHolder.shape_name.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       // TODO Auto-generated method stub 
       if (shape_name_temp.isChecked()==true) { 
        All_link.SHAPE=shape_name_temp.getText().toString(); 
       } 
      } 
     }); 


     //new PerformBackgroungTask().execute(); 
    } 
    else{ 
     viewHolder=(ViewHolder)convertView.getTag(); 
    } 
    return convertView; 
    //break; 



case 1: 

    viewHolder = null; 
    if (convertView==null) { 
     viewHolder=new ViewHolder(); 
     convertView = infalInflater.inflate(R.layout.list_child_carat, null); 
     viewHolder.carat_from = (TextView) convertView.findViewById(R.id.ed_carat_from); 
     viewHolder.carat_to = (TextView) convertView.findViewById(R.id.ed_carat_to); 

     viewHolder.carat_from.setText("jdsv"); 
     viewHolder.carat_to.setText("jdsv"); 

     All_link.CARAT_FROM=viewHolder.carat_from.getText().toString(); 
     All_link.CARAT_TO=viewHolder.carat_to.getText().toString(); 

    } 
    else{ 
     viewHolder=(ViewHolder)convertView.getTag(); 
    } 
    return convertView; 


case 2: 

    viewHolder = null; 
    if (convertView==null) { 
     viewHolder=new ViewHolder(); 

     convertView = infalInflater.inflate(R.layout.list_child_color, null); 
     viewHolder.color_from = (Spinner) convertView.findViewById(R.id.spn_color_from); 
     viewHolder.color_to = (Spinner) convertView.findViewById(R.id.spn_color_to); 


     ArrayAdapter adapter = new ArrayAdapter(_context, android.R.layout.simple_spinner_item, SearchActivity.color_list); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);    
     viewHolder.color_from.setAdapter(adapter); 
     viewHolder.color_to.setAdapter(adapter); 

     convertView.setTag(viewHolder); 

     final Spinner color_from_temp=viewHolder.color_from; 
     final Spinner color_to_temp=viewHolder.color_to; 

     // Changing textcolor 
     viewHolder.color_from.setOnItemSelectedListener(new OnItemSelectedListener() { 

       @Override 
       public void onItemSelected(AdapterView<?> parent, View view, 
         int position, long id) { 
        // TODO Auto-generated method stub 

        All_link.COLOR_FROM=color_from_temp.getSelectedItem().toString(); 
         ((TextView) parent.getChildAt(0)).setTextColor(Color.parseColor("#003974"));       
       } 
       @Override 
       public void onNothingSelected(AdapterView<?> parent) { 
        // TODO Auto-generated method stub       
       } 
      }); 
     viewHolder.color_to.setOnItemSelectedListener(new OnItemSelectedListener() { 

      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, 
        int position, long id) { 
       // TODO Auto-generated method stub 

       All_link.COLOR_TO=color_to_temp.getSelectedItem().toString(); 
        ((TextView) parent.getChildAt(0)).setTextColor(Color.parseColor("#003974"));       
      } 
      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 
       // TODO Auto-generated method stub       
      } 
     }); 
    } 
    else{ 
     viewHolder=(ViewHolder)convertView.getTag(); 
    } 
    return convertView; 

回答

0

試試這個:

case 0: 
viewHolder = null; 
if (convertView==null) { 
    viewHolder=new ViewHolder();     
    convertView = infalInflater.inflate(R.layout.list_child_shape, null); 
    viewHolder.shape_name = (CheckBox) convertView.findViewById(R.id.shape_chk_box); 
    viewHolder.img_shape_icon=(ImageView)convertView.findViewById(R.id.img_shape); 


    imageLoader.DisplayImage("http://rosycontact.com/shashvat/images/"+_childText+".png", viewHolder.img_shape_icon); 
    viewHolder.shape_name.setText(_childText); 
    convertView.setTag(viewHolder); 


    //final CheckBox shape_name_temp=viewHolder.shape_name; 
    viewHolder.shape_name.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      // TODO Auto-generated method stub 
      if (isChecked) { 
       All_link.SHAPE=shape_name_temp.getText().toString(); 
      } 
     } 
    }); 


    //new PerformBackgroungTask().execute(); 
} 
else{ 
    viewHolder=(ViewHolder)convertView.getTag(); 
} 
return convertView; 
//break; 
+0

我可以沒有任何通知而變動的兄弟.. – 2015-03-03 11:10:55

+0

有變化.. 1.final複選框shape_name_temp = viewHolder.shape_name; 上面的行被註釋 2. if(shape_name_temp.isChecked()== true) 這被替換爲 if(isChecked) – 2015-03-03 11:14:11

+0

final CheckBox shape_name_temp = viewHolder.shape_name沒有這個我不能得到選定的值。 – 2015-03-03 11:17:47