I came across this two days ago. Here is my solution:
First stretch the ExpandableListActivity and override the onCreate () method as follows:
public class ExpandableExample extends ExpandableListActivity { @Override public void onCreate() { super.onCreate(savedInstanceState); setListAdapter(new BaseExpandableListAdapterExample()); } }
Definition of BaseExpanableListAdapterExample (inner class ExpandableExample ):
protected class BaseExpandableListAdapterExample extends BaseExpandableListAdapter { }
Then you need to implement getChildView and getGroupView . I have done this:
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { View groupRow = getLayoutInflater().inflate(R.layout.group_row, null); TextView textView = (TextView) groupRow.findViewById(R.id.text_group); textView.setText(getGroup(groupPosition).toString()); return groupRow; } public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { View childRow = getLayoutInflater().inflate(R.layout.child_row, null); TextView textView = (TextView) childRow.findViewById(R.id.text_child); textView.setText(getChild(groupPosition, childPosition).toString()); return childRow; }
Then you need to define both group_row.xml and child_row.xml in the /res/layout/ directory. For example, my group_row.xml looks like this:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/text_element" android:layout_width="fill_parent" android:layout_height="48dip" android:textSize="20sp" android:textColor="#fff" android:layout_marginLeft="48dip" android:gravity="center_vertical" /> </RelativeLayout>
Hope this helps. Comment if you have any questions.
licorna
source share