title: How to implement different click events for child of expandable list?
body: <p>In my expandable list view I have a <code>textView</code> and an <code>imagebutton</code>. When I click on the <code>textView</code> or child view of expandable list, it should show an <code>alertbox</code>. I can achieve this by using <code>onChildClick</code> but I have an <code>imagebutton</code> inside the child view after <code>textView</code>. When I click on this, it should perform another activity. I don't know how to implement this in an expandable list.</p>
  
  <p>Here is my expandable list code. Please check it. I tried <code>android:onClick="myClickHandler"</code> too. I'm getting some <code>illegalstateException</code>.</p>
  
  <p>Here is my code:</p>
  
  <pre><code>import android.app.ExpandableListActivity;
  import android.graphics.Color;
  import android.os.Bundle;
  import android.view.View;
  import android.view.ViewGroup;
  import android.view.View.OnClickListener;
  import android.widget.Button;
  import android.widget.ExpandableListView;
  import android.widget.ImageButton;
  import android.widget.ImageView;
  import android.widget.LinearLayout;
  import android.widget.SimpleExpandableListAdapter;
  import android.widget.TextView;
  import android.widget.Toast;
  import java.util.List;
  import java.util.ArrayList;
  import java.util.HashMap;
  import android.util.Log;
  
  public class CoctailsActivity extends ExpandableListActivity implements OnClickListener
  {
      private static final String LOG_TAG = "ElistCBox";
      public static ImageButton img_button;
  
      static final String Group[] = {
        "A",
        "B",
        "C",
        "D"
      };
  
      static final String Children[][] = {
        {
          "lightgrey",
          "dimgray",
          "sgi gray 92"
        },
        {
          "dodgerblue 2",
          "steelblue 2",
          "powderblue",
        },
        {
          "yellow 1",
          "gold 1",
          "darkgoldenrod 1",
        },
        {
          "indianred 1",
          "firebrick 1",
          "maroon",
        }
      };
  
      /** Called when the activity is first created. */
      @Override
      public void onCreate(Bundle icicle)
      {
          super.onCreate(icicle);
          setContentView(R.layout.exp_list);
  
          SimpleExpandableListAdapter expListAdapter =new SimpleExpandableListAdapter
              (
                  this,
                  createGroupList(),  
                  R.layout.group_row, 
                  new String[] { "Group" },   
                  new int[] { R.id.group_name },      
                  createChildList(),  
                  R.layout.child_row, 
                  new String[] { "Children"}, 
                  new int[] { R.id.child_name }   
              );
          setListAdapter( expListAdapter );
  
  
      }
  
      public void  onContentChanged  () 
      {
          super.onContentChanged();
          Log.d( LOG_TAG, "onContentChanged" );
      }
      public void myClickHandler(View v) 
      {
          Log.v( LOG_TAG, "insideMyHandler" );
  
  
  
          ExpandableListView lvItems = getExpandableListView();
          for (int i=0; i &lt; lvItems.getChildCount(); i++) 
          {
              lvItems.getChildAt(i).setBackgroundColor(Color.BLUE);        
          }
  
  
  
          LinearLayout vwParentRow = (LinearLayout)v.getParent();
  
          TextView child = (TextView)vwParentRow.getChildAt(0);
          Button btnChild = (Button)vwParentRow.getChildAt(1);
          btnChild.setText(child.getText());
          btnChild.setText("I've been clicked!");
  
          int c = Color.CYAN;
  
          vwParentRow.setBackgroundColor(c); 
          vwParentRow.refreshDrawableState();       
      }
  
  
     public boolean onChildClick(ExpandableListView parent,View v,int groupPosition,int childPosition,long id) 
     {
          Log.d( LOG_TAG, "onChildClick: "+childPosition );
  
          return false;
      }
  
      public void  onGroupExpand  (int groupPosition) {
          Log.d( LOG_TAG,"onGroupExpand: "+groupPosition );
      }
  
      private List&lt;HashMap&lt;String, String&gt;&gt; createGroupList() {
        ArrayList&lt;HashMap&lt;String, String&gt;&gt; result = new ArrayList&lt;HashMap&lt;String, String&gt;&gt;();
        for( int i = 0 ; i &lt; Group.length ; ++i ) {
          HashMap&lt;String, String&gt; m = new HashMap&lt;String, String&gt;();
          m.put( "Group",Group[i] );
          result.add( m );
        }
        return (List&lt;HashMap&lt;String, String&gt;&gt;)result;
      }
  
    private List&lt;ArrayList&lt;HashMap&lt;String, String&gt;&gt;&gt; createChildList() {
      ArrayList&lt;ArrayList&lt;HashMap&lt;String, String&gt;&gt;&gt; result = new ArrayList&lt;ArrayList&lt;HashMap&lt;String, String&gt;&gt;&gt;();
      for( int i = 0 ; i &lt; Children.length ; ++i ) 
      {
  // Second-level lists
        ArrayList&lt;HashMap&lt;String, String&gt;&gt; secList = new ArrayList&lt;HashMap&lt;String, String&gt;&gt;();
        for( int n = 0 ; n &lt; Children[i].length ; n += 2 ) 
        {
          HashMap&lt;String, String&gt; child = new HashMap&lt;String, String&gt;();
          child.put( "Children", Children[i][n] );
          //child.put( "rgb", shades[i][n+1] );
          secList.add( child );
        }
        result.add( secList );
      }
      return result;
    }
  
  @Override
  public void onClick(View v) {
      // TODO Auto-generated method stub
      img_button =(ImageButton)v.findViewById(R.id.img01);
      if(img_button!=null){
          Log.v( LOG_TAG, "onclick clickedddddd" );
      }
  
  }
  
  }
  </code></pre>
  
  <p>Please help me.</p>