Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid ExpandableListView CheckBox Select Only Clicked Checkbox
    primarykey
    data
    text
    <p>I have a quick question on <code>ExpandableListViews</code> and using <code>CheckBoxes</code>. I will show the current code below. I currently have a <code>ExpandableListView</code> with a checkbox in each child row. </p> <p>These <code>checkboxes</code> can be selected and such but the problem is I have many children in my <code>ExpandableListView</code>. So the problem is that when I check on box, it shows that more than one checkbox is selected. So if I check the first child checkbox it also shows that the 6th or 7th child is also selected. </p> <pre><code>package com.WebGems.MW3CustomClasses; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import android.app.Activity; import android.content.Context; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CheckBox; import android.widget.ExpandableListView; import android.widget.ExpandableListView.OnChildClickListener; import android.widget.ImageView; import android.widget.SimpleExpandableListAdapter; import android.widget.TextView; public class PrimaryWeapon extends Activity { ExpandableListView listPrimaryWeapon; //Strike Package ArrayLists ArrayList assaultPackage = new ArrayList(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.primary_weapon); listPrimaryWeapon = (ExpandableListView)findViewById(R.id.listView1); Bundle extras = getIntent().getExtras(); String type = extras.getString("type"); if(type.equals("assault")) { showAssaultPackageList(); } } private void showAssaultPackageList() { // TODO Auto-generated method stub assaultPackage.add("UAV"); assaultPackage.add("CARE PACKAGE"); assaultPackage.add("I.M.S."); assaultPackage.add("PREDATOR MISSILE"); assaultPackage.add("SENTRY GUN"); assaultPackage.add("PRECISION AIRSTRIKE"); assaultPackage.add("ATTACK HELICOPTER"); assaultPackage.add("STRAFE RUN"); assaultPackage.add("AH-6 OVERWATCH"); assaultPackage.add("REAPER"); assaultPackage.add("ASSAULT DRONE"); assaultPackage.add("AC-130"); assaultPackage.add("PAVE LOW"); assaultPackage.add("JUGGERNAUT"); assaultPackage.add("OSPREY GUNNER"); // Construct Expandable List final String NAME = "name"; final String IMAGE = "image"; final String DATA = "data"; final String NUMBER = "number"; final LayoutInflater layoutInflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); final ArrayList&lt;HashMap&lt;String, String&gt;&gt; headerData = new ArrayList&lt;HashMap&lt;String, String&gt;&gt;(); final HashMap&lt;String, String&gt; group1 = new HashMap&lt;String, String&gt;(); group1.put(NAME, "Assault Package"); headerData.add( group1 ); final ArrayList&lt;ArrayList&lt;HashMap&lt;String, Object&gt;&gt;&gt; childData = new ArrayList&lt;ArrayList&lt;HashMap&lt;String, Object&gt;&gt;&gt;(); final ArrayList&lt;HashMap&lt;String, Object&gt;&gt; group1data = new ArrayList&lt;HashMap&lt;String, Object&gt;&gt;(); childData.add(group1data); int assaultPackageCounter = 0; for(int arm = 0; arm &lt; assaultPackage.size(); ++arm) { final HashMap&lt;String, Object&gt; assaultPackageMap = new HashMap&lt;String, Object&gt;(); assaultPackageMap.put(NAME, assaultPackage.get(arm)); if(assaultPackageCounter == 0) { assaultPackageMap.put(IMAGE, getResources().getDrawable(R.drawable.uav)); assaultPackageMap.put(DATA, "UAV DESCRIPTION"); assaultPackageMap.put(NUMBER, getResources().getDrawable(R.drawable.three)); } if(assaultPackageCounter == 1) { assaultPackageMap.put(IMAGE, getResources().getDrawable(R.drawable.carepackage)); assaultPackageMap.put(DATA, "CARE PACKAGE DESCRIPTION"); assaultPackageMap.put(NUMBER, getResources().getDrawable(R.drawable.four)); } if(assaultPackageCounter == 2) { assaultPackageMap.put(IMAGE, getResources().getDrawable(R.drawable.ims)); assaultPackageMap.put(DATA, "IMS DESCRIPTION"); assaultPackageMap.put(NUMBER, getResources().getDrawable(R.drawable.five)); } if(assaultPackageCounter == 3) { assaultPackageMap.put(IMAGE, getResources().getDrawable(R.drawable.predatormissile)); assaultPackageMap.put(DATA, "PREDATOR MISSILE DESCRIPTION"); assaultPackageMap.put(NUMBER, getResources().getDrawable(R.drawable.five)); } if(assaultPackageCounter == 4) { assaultPackageMap.put(IMAGE, getResources().getDrawable(R.drawable.sentrygun)); assaultPackageMap.put(DATA, "SENTRY GUN DESCRIPTION"); assaultPackageMap.put(NUMBER, getResources().getDrawable(R.drawable.five)); } if(assaultPackageCounter == 5) { assaultPackageMap.put(IMAGE, getResources().getDrawable(R.drawable.precisionairstrike)); assaultPackageMap.put(DATA, "PRECISION AIRSTRIKE DESCRIPTION"); assaultPackageMap.put(NUMBER, getResources().getDrawable(R.drawable.six)); } if(assaultPackageCounter == 6) { assaultPackageMap.put(IMAGE, getResources().getDrawable(R.drawable.attackhelicopter)); assaultPackageMap.put(DATA, "ATTACK HELICOPTER DESCRIPTION"); assaultPackageMap.put(NUMBER, getResources().getDrawable(R.drawable.seven)); } if(assaultPackageCounter == 7) { assaultPackageMap.put(IMAGE, getResources().getDrawable(R.drawable.straferun)); assaultPackageMap.put(DATA, "STRAFE RUN DESCRIPTION"); assaultPackageMap.put(NUMBER, getResources().getDrawable(R.drawable.nine)); } if(assaultPackageCounter == 8) { assaultPackageMap.put(IMAGE, getResources().getDrawable(R.drawable.ahsixoverwatch)); assaultPackageMap.put(DATA, "AH-6 OVERWATCH DESCRIPTION"); assaultPackageMap.put(NUMBER, getResources().getDrawable(R.drawable.nine)); } if(assaultPackageCounter == 9) { assaultPackageMap.put(IMAGE, getResources().getDrawable(R.drawable.reaper)); assaultPackageMap.put(DATA, "REAPER DESCRIPTION"); assaultPackageMap.put(NUMBER, getResources().getDrawable(R.drawable.nine)); } if(assaultPackageCounter == 10) { assaultPackageMap.put(IMAGE, getResources().getDrawable(R.drawable.assaultdrone)); assaultPackageMap.put(DATA, "ASSAULT DRONE DESCRIPTION"); assaultPackageMap.put(NUMBER, getResources().getDrawable(R.drawable.ten)); } if(assaultPackageCounter == 11) { assaultPackageMap.put(IMAGE, getResources().getDrawable(R.drawable.aconethreezero)); assaultPackageMap.put(DATA, "AC-130 DESCRIPTION"); assaultPackageMap.put(NUMBER, getResources().getDrawable(R.drawable.twelve)); } if(assaultPackageCounter == 12) { assaultPackageMap.put(IMAGE, getResources().getDrawable(R.drawable.pavelow)); assaultPackageMap.put(DATA, "PAVE LOW DESCRIPTION"); assaultPackageMap.put(NUMBER, getResources().getDrawable(R.drawable.twelve)); } if(assaultPackageCounter == 13) { assaultPackageMap.put(IMAGE, getResources().getDrawable(R.drawable.juggernaut)); assaultPackageMap.put(DATA, "JUGGERNAUT DESCRIPTION"); assaultPackageMap.put(NUMBER, getResources().getDrawable(R.drawable.fifteen)); } if(assaultPackageCounter == 14) { assaultPackageMap.put(IMAGE, getResources().getDrawable(R.drawable.ospreygunner)); assaultPackageMap.put(DATA, "OSPREY GUNNER DESCRIPTION"); assaultPackageMap.put(NUMBER, getResources().getDrawable(R.drawable.seventeen)); } assaultPackageCounter++; group1data.add(assaultPackageMap); } assaultPackageCounter = 0; // Set up some sample data in both groups /*for( int i=0; i&lt;10; ++i) { final HashMap&lt;String, Object&gt; map = new HashMap&lt;String,Object&gt;(); map.put(NAME, "Child " + i ); //map.put(DATA, "Data " + i); map.put(IMAGE, getResources().getDrawable((i%3==0? R.drawable.arrowright : R.drawable.arrowdown))); ( i%2==0 ? group1data : group2data ).add(map); }*/ listPrimaryWeapon.setAdapter( new SimpleExpandableListAdapter( this, headerData, R.layout.group_row, new String[] { NAME, DATA }, // the names of the data new int[] { R.id.groupname }, // the text field to populate with the field data childData, 0, null, new int[] {} ) { @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { final View v = super.getChildView(groupPosition, childPosition, isLastChild, convertView, parent); // Populate your custom view here ((TextView)v.findViewById(R.id.name)).setText( (String) ((Map&lt;String,Object&gt;)getChild(groupPosition, childPosition)).get(NAME) ); ((TextView)v.findViewById(R.id.textView1)).setText( (String) ((Map&lt;String,Object&gt;)getChild(groupPosition, childPosition)).get(DATA) ); ((ImageView)v.findViewById(R.id.image)).setImageDrawable( (Drawable) ((Map&lt;String,Object&gt;)getChild(groupPosition, childPosition)).get(IMAGE) ); ((ImageView)v.findViewById(R.id.imageView1)).setImageDrawable( (Drawable) ((Map&lt;String,Object&gt;)getChild(groupPosition, childPosition)).get(NUMBER) ); CheckBox cb = (CheckBox)v.findViewById( R.id.checkBox1 ); cb.setClickable(false); return v; } @Override public View newChildView(boolean isLastChild, ViewGroup parent) { return layoutInflater.inflate(R.layout.strikepackagelayout, null, false); } } ); ExpandableListView list = (ExpandableListView) findViewById(R.id.listView1); list.setChoiceMode(ExpandableListView.CHOICE_MODE_MULTIPLE); list.setOnChildClickListener(new OnChildClickListener(){ public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { CheckBox cb = (CheckBox)v.findViewById( R.id.checkBox1 ); if(cb != null){ cb.toggle(); } Log.d("type", "Group: " + groupPosition + ", Child: " + childPosition); System.out.println("Group:"+groupPosition+", Child: "+childPosition); return true; } }); listPrimaryWeapon.expandGroup(0); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload