Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid ExpandableListView with Checkbox, Controlling checked state
    primarykey
    data
    text
    <p>Friends,</p> <p>I am trying to write a application which use checkbox in ExpandableListView, I got a problem here which is maintaining checkbox state of the application, I got the example from <a href="http://mylifewithandroid.blogspot.com/2010/02/expandable-lists-and-check-boxes.html" rel="noreferrer">here</a> , my problem is maintaining checked state of the checkboxes, whenever I check one of the checkboxes and Expand the List, the checkboxes do not have the checked state where they supposed to have. I have try to maintain by adding ArrayList to store the position of the store and reload the position in getChildView() but still not achieve what I want to do. here is my code </p> <pre><code>public class ElistCBox extends ExpandableListActivity { private static final String LOG_TAG = "ElistCBox"; ArrayList&lt;String &gt; chkState = new ArrayList&lt;String&gt;(); static final String colors[] = {"grey","blue","yellow","red"}; static final String shades[][] ={ { "lightgrey","#D3D3D3","dimgray","#696969", "sgi &gt;gray 92","#EAEAEA"}, { "dodgerblue 2","#1C86EE","steelblue &gt;2","#5CACEE","powderblue","#B0E0E6"}, { "yellow 1","#FFFF00", "gold 1","#FFD700","darkgoldenrod 1"," #FFB90F" }, {"indianred 1","#FF6A6A", "firebrick 1","#FF3030", "maroon","#800000" } }; /** Called when the activity is first created. */ @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); SimpleExpandableListAdapter expListAdapter = new SimpleExpandableListAdapter( this, createGroupList(), R.layout.group_row, new String[] { "colorName" }, new int[] { R.id.childname }, createChildList(), R.layout.child_row, new String[] { "shadeName", "rgb" }, new int[] { R.id.childname, R.id.rgb } ) { @Override public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { final View v = super.getChildView(groupPosition, childPosition, isLastChild, convertView, parent); final CheckBox chkColor = (CheckBox)v.findViewById(R.id.check1); if(chkState.contains(groupPosition+","+childPosition)){ chkColor.setChecked(true); }else{ chkColor.setChecked(false); } chkColor.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Log.e("Checkbox Onclick Listener", Integer.toString(groupPosition) + " - " + Integer.toString(childPosition)); } }); chkColor.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { Log.e("Checkbox check change Listener", Integer.toString(groupPosition) + " - " + Integer.toString(childPosition)); if(chkColor.isChecked()){ chkState.add(groupPosition+","+childPosition); } else { chkState.remove(groupPosition+","+childPosition); } } }); return super.getChildView(groupPosition, childPosition, isLastChild, convertView, parent); } }; setListAdapter( expListAdapter ); } public void onContentChanged () { super.onContentChanged(); Log.e( LOG_TAG, "onContentChanged" ); } public boolean onChildClick( ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { Log.e( LOG_TAG, "onChildClick: "+childPosition ); CheckBox cb = (CheckBox)v.findViewById( R.id.check1 ); if( cb != null ) cb.toggle(); return false; } public void onGroupExpand (int groupPosition) { Log.e( LOG_TAG,"onGroupExpand: "+groupPosition ); } private List createGroupList() { ArrayList result = new ArrayList(); for( int i = 0 ; i &lt; colors.length ; ++i ) { HashMap m = new HashMap(); m.put( "colorName",colors[i] ); result.add( m ); } return (List)result; } private List createChildList() { ArrayList result = new ArrayList(); for( int i = 0 ; i &lt; shades.length ; ++i ) { ArrayList secList = new ArrayList(); for( int n = 0 ; n &lt; shades[i].length; n += 2 ) { HashMap child = new HashMap(); child.put( "shadeName", shades[i][n] ); child.put( "rgb", shades[i][n+1] ); secList.add( child ); } result.add( secList ); } return result; } } </code></pre>
    singulars
    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.
 

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