1 package com.example.adaptertest.doubleadapter; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.widget.ExpandableListView; 6 7 import com.example.adaptertest.R; 8 9 public class ExpandListViewActivity extends Activity { 10 private String[] groupStrings = { "家人", "同事", "朋友" }; 11 private String[][] personStrings = { { "爸", "妈" }, { "同事1", "同事2" }, 12 { "朋友1", "朋友2" } }; 13 14 @Override 15 protected void onCreate(Bundle savedInstanceState) { 16 // TODO Auto-generated method stub 17 super.onCreate(savedInstanceState); 18 setContentView(R.layout.activity_expandlistview); 19 ExpandableListView expandableListView = (ExpandableListView) findViewById(R.id.expandlistview_list); 20 expandableListView.setAdapter(new BaseExpandListViewAdapter( 21 ExpandListViewActivity.this, groupStrings, personStrings)); 22 23 } 24 25 }
1 package com.example.adaptertest.doubleadapter; 2 3 import android.content.Context; 4 import android.view.LayoutInflater; 5 import android.view.View; 6 import android.view.View.OnClickListener; 7 import android.view.ViewGroup; 8 import android.widget.BaseExpandableListAdapter; 9 import android.widget.TextView; 10 import android.widget.Toast; 11 12 import com.example.adaptertest.R; 13 14 public class BaseExpandListViewAdapter extends BaseExpandableListAdapter { 15 private LayoutInflater inflater; 16 private String[] groupStrings; 17 private String[][] personStrings; 18 private Context context; 19 20 public BaseExpandListViewAdapter(Context context, String[] groupStrings, 21 String[][] personStrings) { 22 this.groupStrings = groupStrings; 23 this.context = context; 24 this.personStrings = personStrings; 25 inflater = LayoutInflater.from(context); 26 } 27 28 @Override 29 public int getGroupCount() { 30 // TODO Auto-generated method stub 31 return groupStrings.length; 32 } 33 34 @Override 35 public int getChildrenCount(int groupPosition) { 36 // TODO Auto-generated method stub 37 return personStrings[groupPosition].length; 38 } 39 40 @Override 41 public Object getGroup(int groupPosition) { 42 // TODO Auto-generated method stub 43 return groupStrings[groupPosition]; 44 } 45 46 @Override 47 public Object getChild(int groupPosition, int childPosition) { 48 // TODO Auto-generated method stub 49 return personStrings[groupPosition][childPosition]; 50 } 51 52 @Override 53 public long getGroupId(int groupPosition) { 54 // TODO Auto-generated method stub 55 return groupPosition; 56 } 57 58 @Override 59 public long getChildId(int groupPosition, int childPosition) { 60 // TODO Auto-generated method stub 61 return 0; 62 } 63 64 @Override 65 public boolean hasStableIds() { 66 // TODO Auto-generated method stub 67 return false; 68 } 69 70 @Override 71 public View getGroupView(int groupPosition, boolean isExpanded, 72 View convertView, ViewGroup parent) { 73 // TODO Auto-generated method stub 74 View view = inflater.inflate(R.layout.expandlistview_item, null); 75 TextView textView = (TextView) view.findViewById(R.id.expand_text); 76 textView.setText(groupStrings[groupPosition]); 77 return view; 78 } 79 80 @Override 81 public View getChildView(final int groupPosition, final int childPosition, 82 boolean isLastChild, View convertView, ViewGroup parent) { 83 View view = inflater.inflate(R.layout.expandlistview_childitem, null); 84 view.setOnClickListener(new OnClickListener() { 85 86 @Override 87 public void onClick(View v) { 88 // TODO Auto-generated method stub 89 Toast.makeText(context, 90 personStrings[groupPosition][childPosition], 91 Toast.LENGTH_SHORT).show(); 92 } 93 }); 94 TextView textView = (TextView) view 95 .findViewById(R.id.expand_child_text); 96 textView.setText(personStrings[groupPosition][childPosition]); 97 return view; 98 } 99 100 @Override 101 public boolean isChildSelectable(int groupPosition, int childPosition) { 102 // TODO Auto-generated method stub 103 return false; 104 } 105 106 }
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="vertical" > 6 7 <ExpandableListView 8 android:id="@+id/expandlistview_list" 9 android:layout_width="fill_parent" 10 android:layout_height="fill_parent"> 11 </ExpandableListView> 12 13 </LinearLayout>
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="horizontal" > 6 7 <ImageView 8 android:layout_width="wrap_content" 9 android:layout_height="wrap_content" 10 android:src="@drawable/ic_launcher" /> 11 12 <TextView 13 android:id="@+id/expand_text" 14 android:layout_width="wrap_content" 15 android:layout_height="wrap_content" 16 android:layout_weight="1" 17 android:text="测试" 18 android:textSize="30sp" /> 19 20 </LinearLayout>
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="horizontal" > 6 7 <ImageView 8 android:layout_width="wrap_content" 9 android:layout_height="wrap_content" 10 android:src="@drawable/ic_launcher" 11 android:layout_marginLeft="40dp"/> 12 13 <TextView 14 android:id="@+id/expand_child_text" 15 android:layout_width="wrap_content" 16 android:layout_height="wrap_content" 17 android:layout_weight="1" 18 android:text="测试" 19 android:textSize="30sp" /> 20 21 </LinearLayout>