title: Expandable list view in Android doesn't have reaction to click, it doesn't expand
body: <p>I have an expandable listview. I have put some dummy data and evrything seems ok but when I run the application all groups are in collapse mode and they don't take effect when I click on each of them. This is the screenshot:</p>
  
  <p><img src="https://i.stack.imgur.com/wnULS.png" alt="enter image description here"></p>
  
  <p>XML of Group is:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  
  &lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:background="@color/bg_slider"
      android:orientation="horizontal" &gt;
  
  
      &lt;TextView
          android:id="@+id/tvRecipeName"
          style="@style/normal_text.bold"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentLeft="true"
          android:layout_centerVertical="true"
          android:layout_marginLeft="50dp"
          android:layout_marginRight="5dp"
          android:focusable="false"
          android:lines="1"
          android:maxLines="1"
          android:text="@string/dd_title" /&gt;
  
  
      &lt;ImageButton
          android:id="@+id/ibDeleteRecipe"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentRight="true"
          android:layout_centerVertical="true"
          android:layout_marginRight="15dp"
          android:background="@color/transparent"
          android:contentDescription="@string/cd"
          android:focusable="false"
          android:src="@android:drawable/ic_menu_delete" /&gt;
  
      &lt;View
          android:layout_width="1dp"
          android:layout_height="50dp"
          android:layout_alignParentLeft="true"
          android:layout_toLeftOf="@+id/tvRecipeName"
          android:focusable="false" /&gt;
  
  &lt;/RelativeLayout&gt;
  </code></pre>
  
  <p>XML of child is:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  
  &lt;RelativeLayout 
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:background="@color/White"
      android:gravity="left|center_vertical" &gt;
  
      &lt;View
          android:layout_width="1dp"
          android:layout_height="35dp"
          android:layout_toLeftOf="@+id/tvIngredient"
          android:focusable="false" /&gt;
  
      &lt;TextView
          android:id="@+id/tvIngredient"
          style="@style/normal_text_black"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentLeft="true"
          android:layout_centerVertical="true"
          android:layout_marginLeft="30dp"
          android:layout_marginRight="5dp"
          android:lines="1"
          android:maxLines="1"
          android:text="@string/dd_title"
          android:focusable="false" /&gt;
  
      &lt;ImageButton
          android:id="@+id/ibDeleteIngredient"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentRight="true"
          android:layout_centerVertical="true"
          android:layout_marginRight="15dp"
          android:background="@color/transparent"
          android:contentDescription="@string/cd"
          android:focusable="false"
          android:src="@android:drawable/btn_dialog" /&gt;
  
  &lt;/RelativeLayout&gt;
  </code></pre>
  
  <p>and in main.xml, definition of expandable list is:</p>
  
  <pre><code>&lt;ExpandableListView
              android:id="@+id/elv"
              android:layout_width="match_parent"
              android:layout_height="match_parent" /&gt;
  </code></pre>
  
  <p>I have an adapter that I have written this code for that:</p>
  
  <pre><code>public class ExpAdapter extends BaseExpandableListAdapter {
  
      private final String TAG = "ExpAdapter";
      private Context context;
      static final String arrGroupelements[] = {"India", "Australia", "England", "South Africa"};
      static final String arrChildelements[][] = { {"Sachin Tendulkar", "Raina", "Dhoni", "Yuvi" },
                                                   {"Ponting", "Adam Gilchrist", "Michael Clarke"},
                                                   {"Andrew Strauss", "kevin Peterson", "Nasser Hussain"},
                                                   {"Graeme Smith", "AB de villiers", "Jacques Kallis"} };
  
      public ExpAdapter(Context context) {
          this.context = context;
  
          Log.i(TAG, "Adapter created.");
      }
  
  
      @Override
      public Object getChild(int groupPosition, int childPosition) {
          return null;
      }
  
      @Override
      public long getChildId(int groupPosition, int childPosition) {
  
          return 0;
      }
  
      @Override
      public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
  
          if (convertView == null) {
              LayoutInflater inflater =  (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
              convertView = inflater.inflate(R.layout.elv_child, null);
          }
  
          TextView tvItem = (TextView) convertView.findViewById(R.id.tvIngredient);
          ImageButton ibDelete = (ImageButton) convertView.findViewById(R.id.ibDeleteIngredient);
          ibDelete.setOnClickListener(new OnClickListener() {
              @Override
              public void onClick(View v) {
                  Log.i(TAG, "******");
              }
          });
          tvItem.setText(arrChildelements[groupPosition][childPosition]);
  
          return convertView;
      }
  
      @Override
      public int getChildrenCount(int groupPosition) {
          return arrChildelements[groupPosition].length;
      }
  
      @Override
      public Object getGroup(int groupPosition) {
          return null;
      }
  
      @Override
      public int getGroupCount() {
          return arrGroupelements.length;
      }
  
      @Override
      public long getGroupId(int groupPosition) {
          return 0;
      }
  
      @Override
      public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
  
          if (convertView == null) {
              LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
              convertView = inflater.inflate(R.layout.elv_group, null);
          }
  
          TextView tvItem = (TextView) convertView.findViewById(R.id.tvRecipeName);
          ImageButton ibDeleteRcipe = (ImageButton) convertView.findViewById(R.id.ibDeleteRecipe);
          ibDeleteRcipe.setOnClickListener(new OnClickListener() {
              @Override
              public void onClick(View v) {
                  Log.i(TAG, "%%%%%%");
              }
          });
          tvItem.setText(arrGroupelements[groupPosition]);
  
          return convertView;
      }
  
      @Override
      public boolean hasStableIds() {
          return false;
      }
  
      @Override
      public boolean isChildSelectable(int groupPosition, int childPosition) {
          return true;
      }
  
  }
  </code></pre>
  
  <p>and finally, in code of fragment activity i have:</p>
  
  <pre><code>public class ShoppingList extends FragmentActivity {    
          ExpAdapter adapter = new ExpAdapter(this);
          //Linking expnadable list view
          expListView = (ExpandableListView) findViewById(R.id.elv);
          expListView.setAdapter(adapter);
          expListView.setOnGroupExpandListener(new OnGroupExpandListener() {
              @Override
              public void onGroupExpand(int groupPosition) {
                  Log.i(TAG, "Group " + groupPosition + " expanded.");
              }
          });
          expListView.setOnGroupCollapseListener(new OnGroupCollapseListener() {
              @Override
              public void onGroupCollapse(int groupPosition) {
                  Log.i(TAG, "Group " + groupPosition + " collapsed.");
              }
          });
          expListView.setOnChildClickListener(new OnChildClickListener() {
              @Override
              public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
                  Log.i(TAG, "item " + childPosition + " of group " + groupPosition + " clicked.");
                  return false;
              }
          });
  
  }
  </code></pre>
  
  <p>When I run the application and click on parents, nothing happens. I tried to add following lines of code at the end of shopping class:</p>
  
  <pre><code>int count = adapter.getGroupCount();
  for (int position = 1; position &lt;= count; position++)
      expListView.expandGroup(position - 1);
  </code></pre>
  
  <p>Now when I run the application result is like this screenshot:</p>
  
  <p><img src="https://i.stack.imgur.com/1L2Le.png" alt="enter image description here"></p>
  
  <p>If I click on delete buttons (parent or child), I can see they take effect (as I check logcat), however when I click on child or parent nothing happens. So, I have no idea why callbacks doesn't work. Based on my research I found that I need to set <code>Focussable</code> of image buttons to <code>false</code>. As you can see in XML files I did it but still when I click on parent and child rows I can't see any response.</p>