Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android開發系列(八) ExpandableListView的使用方法

Android開發系列(八) ExpandableListView的使用方法

編輯:關於Android編程

前幾天曾經寫過ListView的使用方法,並且設計了一個QQ聯系人列表。今天在此基礎上講一下ExpandableListView的用法,與之前一樣,這裡分成兩節,首先講使用SimpleExpandableListAdapter的使用,後面如果搜集到足夠的材料會講一下自定義適配器的ExpandableListView的使用,到時候,會把之前的QQ聯系人列表進行一下升級。          與ListView類似,首先是xml布局文件,布局文件要有三個,一個是放置ExpandableListView的主布局文件,一個是一級條目的布局文件,另一個是二級條目(即子菜單)的布局文件。   main.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="match_parent"     android:orientation="vertical" >     <!-- 注意這裡的id還是系統自帶的list -->     <ExpandableListView          android:id="@android:id/list"                        android:layout_width="match_parent"         android:layout_height="match_parent"/>        </LinearLayout> 復制代碼 group_layout.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="match_parent"     android:orientation="vertical" >               <TextView          android:id="@+id/myGroup"         android:layout_width="match_parent"         android:layout_height="50dip"         android:paddingLeft="50dip"         android:textSize="12pt"         android:gravity="center_vertical"/>        </LinearLayout> 復制代碼     child_layout.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="match_parent"     android:orientation="vertical" >          <TextView          android:id="@+id/myChild"         android:layout_width="match_parent"         android:layout_height="40dip"         android:paddingLeft="70dip"         android:textSize="10pt"         android:gravity="center_vertical"/>        </LinearLayout> 復制代碼     然後就設置一下MainActivity類就可以了,這裡MainActivity類需要繼承 ExpandableListView類   復制代碼 package com.example.android_expandablelistview;   import java.util.*;   import android.os.Bundle; import android.app.Activity; import android.app.ExpandableListActivity; import android.view.Menu; import android.widget.SimpleExpandableListAdapter;   public class MainActivity extends ExpandableListActivity {               @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);                  //設置一級條目的數據         String[] keysOfGroup={"groupName"};         String[] valuesOfGroup={"group1","group2"};         ArrayList<HashMap<String,String>> listOfGroup=getDataList(keysOfGroup, valuesOfGroup);                  //設置二級條目的數據,一級條目有幾個,就要創建幾個二級條目的list         String[] keysOfChild={"childName"};           //因為不同的一級條目內的子條目對應的鍵名應該是統一的,所以這裡不再單獨為每一個子條目設計鍵名,而是用二級條目共有的鍵名         //group1的子條目的Value值         String[] valuesOfChild1={"child1Data1","child1Data2"};         //group2的子條目的Value值         String[] valuesOfChild2={"child2Data1"};                  ArrayList<HashMap<String,String>> listOfChild1=getDataList(keysOfChild, valuesOfChild1);         ArrayList<HashMap<String,String>> listOfChild2=getDataList(keysOfChild, valuesOfChild2);                  //還要定義一個List對象,將所有的二級條目對應的List按照與group相對應的順序裝進一個list中         ArrayList<ArrayList<HashMap<String,String>>> childs=new ArrayList<ArrayList<HashMap<String,String>>> ();         childs.add(listOfChild1);         childs.add(listOfChild2);                  //創建SimpleExpandableListAdapter對象,這裡用的是最簡單的那個構造方法!         SimpleExpandableListAdapter adapter=new SimpleExpandableListAdapter(this, listOfGroup,                 R.layout.group_layout, keysOfGroup,new int[]{R.id.myGroup},                 childs,R.layout.child_layout,keysOfChild,new int[]{R.id.myChild});                  setListAdapter(adapter);                       }          //構造一個能夠返回List<Map<String,String>>對象的方法     /**      *       * @param keys  List中Map的鍵名,      * @param values  一個List中包含的全部Item的值,因為每一個Item又對應多個鍵名,所以使用了一個二維Vector的形式      * @return  list      */     private ArrayList<HashMap<String,String>> getDataList(String[] keys, String[]values){         ArrayList<HashMap<String,String>> list=new ArrayList<HashMap<String,String>>();         for(int i=0; i<values.length/keys.length; i++){             HashMap<String,String> map=new HashMap<String,String>();             for(int j=0;j<keys.length; j++ ){                 map.put(keys[j], values[i*keys.length+j]);             }             list.add(map);         }              return list;     }                 
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved