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

本例介绍了使用如何Map-based 数据作为Expandable List的数据源。

其中Group和Child的定义如下

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构造函数:

// 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 都会显示:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值