Android ApiDemos示例解析(114):Views->Expandable Lists->3. SimpleAdapter

本例介紹瞭使用如何Map-based 數據作為Expandable List的數據源。

其中Group和Child的定義如下

[java] 
List<Map<String, String>> groupData 
 = new ArrayList<Map<String, String>>(); 
List<List<Map<String, String>>> childData 
 = new ArrayList<List<Map<String, String>>>(); 

List<Map<String, String>> groupData
 = new ArrayList<Map<String, String>>();
List<List<Map<String, String>>> childData
 = new ArrayList<List<Map<String, String>>>();

 

看起來有點復雜:-)。 Map<String,String> 類似於Hash表,這裡可以看成是數據庫表的一行,以列名作為關鍵字。比如本例一行數據為

 

本例為groupData 定義瞭20個隻,從group 0 到group 19 ,對於每個group ,其下定義瞭15個子元素,從child 0 到 child 14

每個元素也有如下的值:

 

有瞭groupdata 和childdata ,就可以調用SimpleExpandableListAdapter構造函數:

[java] 
// Set up our adapter  
mAdapter = new SimpleExpandableListAdapter( 
 this, 
 groupData, 
 android.R.layout.simple_expandable_list_item_1, 
 new String[] { NAME, IS_EVEN }, 
 new int[] { android.R.id.text1, android.R.id.text2 }, 
 childData, 
 android.R.layout.simple_expandable_list_item_2, 
 new String[] { NAME, IS_EVEN }, 
 new int[] { android.R.id.text1, android.R.id.text2 } 
 ); 

// Set up our adapter
mAdapter = new SimpleExpandableListAdapter(
 this,
 groupData,
 android.R.layout.simple_expandable_list_item_1,
 new String[] { NAME, IS_EVEN },
 new int[] { android.R.id.text1, android.R.id.text2 },
 childData,
 android.R.layout.simple_expandable_list_item_2,
 new String[] { NAME, IS_EVEN },
 new int[] { android.R.id.text1, android.R.id.text2 }
 );
public SimpleExpandableListAdapter(Context context,
List<? extends Map<String, ?>> groupData,
int groupLayout, String[] groupFrom,
int[] groupTo,
List<? extends List<? extends Map<String, ?>>> childData,
int childLayout,
String[] childFrom, int[] childTo)

context: context對象,可以使用activity。
groupdata : group 數據源
groupLayout: Group Layout資源ID,本例使用系統資源simple_expandable_list_item_2.
childdata: child 數據源
childLayout: child Layout資源ID,本例使用系統資源simple_expandable_list_item_2。
groupFrom: 需要顯示的組列名數組
groupTo: 對應每個組的列對應的View 的id
childrenFrom: 需要顯示的組成員列名
childrenTo:對應每個組成員的列對應的View 的id。
simple_expandable_list_item_1.xml 和simple_expandable_list_item_2.xml 可以參見http://www.netmite.com/android/mydroid/frameworks/base/core/res/res/layout/

simple_expandable_list_item_1 定義瞭一個文本框 id為text1 ,原例使用simple_expandable_list_item_1 顯示group,對應的IS_EVEN 使用text2 為顯示View的id在simple_expandable_list_item_1 不存在,因此隻會顯示Group xx。使用上述修改後,group 和 child 都使用simple_expandable_list_item_2 ,NAME 和 IS_EVEN 都會顯示:

 

 

作者:mapdigit

 

發佈留言