独自のアダプターを作成できます。
public class ExpandableAdapter extends BaseExpandableListAdapter {
@SuppressWarnings("unused")
private Context context;
private ArrayList<String> groups;
private ArrayList<ArrayList<Expand>> expand;
private LayoutInflater inflater;
public ExpandableAdapter(Context context,
ArrayList<String> groups,
ArrayList<ArrayList<Expand>> expand) {
this.context = context;
this.groups = groups;
this.expand = expand;
inflater = LayoutInflater.from( context );
}
public Object getChild(int groupPosition, int childPosition) {
return expand.get( groupPosition ).get( childPosition );
}
public long getChildId(int groupPosition, int childPosition) {
return (long)( groupPosition*50+childPosition );
}
public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
View convertView, ViewGroup parent) {
View v = null;
if( convertView != null )
v = convertView;
else
v = inflater.inflate(R.layout.child_row, parent, false);
Expand c = (Expand)getChild( groupPosition, childPosition);
TextView color = (TextView)v.findViewById( R.id.grp_child_primero);
if( color != null )
color.setText( c.getTitulo());
TextView rgb = (TextView)v.findViewById( R.id.grp_child_segundo);
if( rgb != null )
rgb.setText( c.getDato());
return v;
}
public int getChildrenCount(int groupPosition) {
return expand.get( groupPosition ).size();
}
public Object getGroup(int groupPosition) {
return groups.get( groupPosition );
}
public int getGroupCount() {
return groups.size();
}
public long getGroupId(int groupPosition) {
return (long)( groupPosition*50 );
}
public View getGroupView(int groupPosition, boolean isExpanded, View convertView,
ViewGroup parent) {
View v = null;
if( convertView != null )
v = convertView;
else
v = inflater.inflate(R.layout.group_row, parent, false);
String gt = (String)getGroup( groupPosition );
TextView expandGroup = (TextView)v.findViewById( R.id.grp_child_primero);
if( gt != null )
expandGroup.setText( gt );
return v;
}
public boolean hasStableIds() {
return true;
}
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
public void onGroupCollapsed (int groupPosition) {}
public void onGroupExpanded(int groupPosition) {}
}
行に 1 つの xml を使用:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/negro">
<TextView android:id="@+id/grp_child_primero"
android:focusable="false"
android:textSize="20sp"
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:background="@drawable/negro"/>
<TextView android:id="@+id/grp_child_segundo"
android:focusable="false"
android:textSize="18sp"
android:textStyle="normal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:background="@drawable/negro"/>
</LinearLayout>
その他のグループ向け:
<?xml version="1.0" encoding="utf-
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/negro">
<TextView android:id="@+id/grp_child_primero"
android:layout_width="wrap_content"
android:paddingLeft="30dp"
android:textSize="20sp"
android:textColor="@drawable/blanco"
android:textStyle="normal"
android:layout_height="wrap_content"
android:gravity="center_horizontal|center_vertical"
android:background="@drawable/negro"/>
</LinearLayout>
それとその後:
ExpandAdapter youadapter = new ExpandAdapter(getApplicationContext(),
namesGroups, nameChilds);
setListAdapter(youadapter);
namesGroups と nameChilds には、行とグループのデータがリストされています。メソッド setListAdapter を使用すると、アダプターを ExpandableListActivity に設定できます;) 最後に、Expand クラスは単純な POJO です。
public class Expand {
public String titulo = null;
public String dato = null;
public Expand( String titulo, String dato) {
this.titulo = titulo;
this.dato = dato;
}
public String getTitulo() {
return titulo;
}
public String getDato() {
return dato;
}
}
主に getChildView メソッド (ExpandableAdapter クラス内) が実装されているように見えますが、必要なものを実装するのが複雑だと思わない場合は内部にいくつかあります。