Not sure why my onChildClick isn't firing. Everything works perfectly, except that when one of the child items is tapped, absolutely nothing happens. Otherwise, the expandable groups work as expected.
I've traced this back to my usage of the checkbox in the child xml file. When I remove this checkbox, the onChildClick fires as expected. But I need this checkbox for the functionality of this activity. What I am I doing wrong? Thanks!
public class MySettings extends Activity {
private ExpandListAdapter expAdapter;
private ArrayList<ExpandListGroup> expListItems;
private ExpandableListView expandableList;
private String client;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_settings);
expandableList = (ExpandableListView) findViewById(R.id.expandable_list);
expListItems = SetStandardGroups(); //works fine - can show code if needed
expAdapter = new ExpandListAdapter(MySettings.this, expListItems);
expandableList.setAdapter(expAdapter);
expandableList.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
//Nothing here ever fires
System.err.println("child clicked");
Toast.makeText(getApplicationContext(), "child clicked", Toast.LENGTH_SHORT).show();
return true;
}
});
}
Here are the xml files:
activity_my_settings.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="@drawable/background" >
<ImageView
android:id="@+id/logo"
android:layout_marginTop="5dip"
android:layout_alignParentTop="true"
android:layout_width="wrap_content"
android:layout_height="70dp"
android:layout_gravity="left"
android:contentDescription="@string/blank"
android:src="@raw/logo" >
</ImageView>
<TextView
android:id="@+id/my_settings"
android:textColor="#000000"
android:layout_below="@id/logo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center"
android:text="@string/my_settings"
android:textSize="30sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@id/my_settings" >
<ExpandableListView
android:id="@+id/expandable_list"
android:scrollingCache="false"
android:layout_marginTop="20dip"
android:layout_height="wrap_content"
android:layout_width="match_parent" />
</LinearLayout>
</RelativeLayout>
expandlist_group_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="55dip"
android:background="#FF7C7C7C" >
<TextView
android:id="@+id/group_header"
android:layout_marginLeft="40dp"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:gravity="center_vertical"
android:textColor="#000000"
android:textSize="22sp" />
</LinearLayout>
expandlist_child_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="55dip"
android:orientation="horizontal" >
<CheckBox
android:id="@+id/check_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/expand_list_item"
android:paddingLeft="10dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/smart_finder_settings_font_size"
android:textColor="#FFFFFF" />
</LinearLayout>
Be sure to override the isChildSelectable method of your expandable list adapter and return true, like so:
public class MyExpandableListAdapter extends BaseExpandableListAdapter {
...
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
...
}