ExpandableListActivity使用使用方法(可以和ListActivity進行對比)建立一個Activity類繼承ExpandableListActvity三個layout主布局 (注意這裡2個id都是android內建的 不是+id)包含<ExpandableListView> 注意其中android:id="@id/android:list" 還有一個android:drawSelectorOnTop="false"(選中時是否遮蓋文字)<TextView android:id="@id/android:empty"> 當無資料時一級目錄布局二級目錄布局(條目item樣式)建立Adapter將simpleExpandableListAdapter對象設定給當前ExpandableListActivitysetListAdapter(adapter);SimpleExpandableListAdapter使用為ExpandableListActivity提供資料//定義List 為一級條目提供資料List<Map<String, String>> groups=new ArrayList<Map<String, String>>();需要幾個條目 產生幾個Map對象Map<String, String> m1=new HashMap<String, String>();m1.put(group,Group1);m2.put(group,Group2);groups.add(m1);groups.add(m2); //定義List 設定二級子條目 一個子條目一個List 一個項 一個Map方法同上 建List(child1 child2)和Map(child:child1Data1;child:child1Data2) //定義一個List 儲存所有二級條目資料*List<List<Map<String, String>>> childs = new ArrayListM<List<Map<String, String>>>();childs.add(child1);childs.add(child2); //產生一個SimpleExpandableListAdapter對象new SimpleExpandableListAdapter(...);參數包括www.2cto.com(context內容物件,一級條目List對象,一級條目布局, new String[]{"groups"})指定一級條目資料的key,new int[]{R.id.groupTo}指定一級條目資料顯示的控制項id,二級條目的資料childs,二級條目布局,二級條目資料key(child),二級條目控制項id} 是實現的:這個執行個體用到三個布局檔案:第一個布局檔案---主架構布局:[html] <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <ExpandableListView android:id="@id/android:list" android:layout_width="match_parent" android:layout_height="match_parent" android:drawSelectorOnTop="false"/> <TextView android:id="@id/android:empty" android:layout_width="match_parent" android:layout_height="match_parent" android:text="No data"/> </LinearLayout> 第二個布局檔案---組布局:[html] <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/group" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="60px" android:paddingTop="10px" android:paddingBottom="10px" android:textSize="26sp" android:text="No data"/> </LinearLayout> 第三個布局檔案---子視圖布局:[html] <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/child" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="50px" android:paddingTop="5px" android:paddingBottom="5px" android:textSize="20sp" android:text="No data"/> </LinearLayout> 具體的實現代碼如下:[java] public class ExpandableListActivity_Activity extends ExpandableListActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_expandable_list_activity_); //定義一個List,這個List為一級條目提供資料 List<Map<String, String>> group=new ArrayList<Map<String,String>>(); Map<String, String> group1=new HashMap<String, String>(); group1.put("group", "group1"); Map<String, String> group2=new HashMap<String, String>(); group2.put("group", "group2"); group.add(group1); group.add(group2); //定義一個List,這個List為第一個一級條目提供二級條目資料 List<Map<String, String>> child1=new ArrayList<Map<String,String>>(); Map<String, String> child1Data1=new HashMap<String, String>(); child1Data1.put("child", "child1Data1"); Map<String, String> child1Data2=new HashMap<String, String>(); child1Data2.put("child", "child1Data2"); child1.add(child1Data1); child1.add(child1Data2); //定義一個List,這個List為第二個一級條目提供二級條目資料 List<Map<String, String>> child2=new ArrayList<Map<String,String>>(); Map<String, String> child2Data1=new HashMap<String, String>(); child2Data1.put("child", "child2Data1"); Map<String, String> child2Data2=new HashMap<String, String>(); child2Data2.put("child", "child2Data2"); child2.add(child2Data1); child2.add(child2Data2); //定義一個List,這個List儲存所有的二級條目資料 List<List<Map<String, String>>> childs=new ArrayList<List<Map<String,String>>>(); childs.add(child1); childs.add(child2); //產生一個SimpleExpandableListAdapter對象 /* * 1.context * 2.一級條目的資料 * 3.用來設定一級條目樣式的布局檔案 * 4.指定一級條目資料的key * 5.指定一級條目資料顯示控制項的id * 6.指定二級條目的資料 * 7.設定二級條目樣式的布局檔案 * 8.指定二級條目資料的key * 9.指定二級條目資料顯示控制項的id */ SimpleExpandableListAdapter selaListActivity=new SimpleExpandableListAdapter (this, group, R.layout.group, new String[]{"group"}, new int[]{R.id.group}, childs,R.layout.child, new String[] {"child"}, new int[]{R.id.child}); setListAdapter(selaListActivity); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_expandable_list_activity_, menu); return true; } }