• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
百分百
http://www.qrw100.com
博客园    首页    新随笔    联系   管理    订阅  订阅

android学习:ExpandableListView的运用

android学习:ExpandableListView的运用

android中有一种expandablelistview,可以扩展的listview,就是那种点击一下可以扩展出子项,再点一下收缩回去的显示list。

因为需要查看一堆文件的目录结构,就使用了expandablelist以便于直观地看到结构形式。

根据APIDemos中的实例,进行细微的改动就可以够自己使用了。

自己建立的activity继承自ExpandableListActivity,设定好的是显示两级结构。至于知否能够扩展更多的级,还没有实验,准备实验一下。顶层是group,第二层是child。

顶层的结构定义为:List<Map<String, String>> groupData = new ArrayList<Map<String, String>>();是个Arraylist结构,其中是Map键值对。

第二层的结构定义为: List<List<Map<String, String>>> childData = new ArrayList<List<Map<String, String>>>();这个可以看成是比顶层多出了个List,是在顶层list中的list,其中也是键值对,所以定义成list<list<map>>>。

之后就是要向每个键值对中写入数据,在list中显示。对于顶层:

Map<String, String> curGroupMap = new HashMap<String, String>();     //定义curGroupMap是Map结构,存储需要用到的键值对      

groupData.add(curGroupMap);            //添加到List中,map结构作为参数,现在list中的单元是map结构存储的数据,表示顶层的数据列表

curGroupMap.put(NAME, "Group " + i);//向map中写入键值对

对于第二层:

因为每个child也是list,所以要先为每个group下的child定义一个List,有多少个group项就应该有多少个如下的children项,这个在使用的时候要注意,否则会出现不同的child键值对覆盖等问题。

 List<Map<String, String>> children = new ArrayList<Map<String, String>>();//这个同顶层的类似,也可以看成,从这一步起又开始了刚才定义顶层是的步骤

for (int j = 0; j < 15; j++) {  

 Map<String, String> curChildMap = new HashMap<String, String>();              //参见以上group中的相关方法

 children.add(curChildMap);                

curChildMap.put(NAME, "Child " + j);              

}          

 childData.add(children);//最后将children这个list添加成为childData中的一个元素。一个child中可能会有好几项,children表示第二层的元素列表

再理清两层数据的具体层次关系后,通过SimpleExpandableListAdapter准备数据匹配器,

mAdapter = new SimpleExpandableListAdapter(             

this,//1.上下文             

groupData,//2.顶层数据列表             

android.R.layout.simple_expandable_list_item_1,//3.1层显示样式 ,系统自定义        

new String[] {ENTRY}, //4.顶层map的键,还可以有一个键        

new int[] { android.R.id.text1},// 5.顶层数据显示的View ID       ,系统自定义       

childData,              //原理同上

android.R.layout.simple_expandable_list_item_2,           

 new String[] {ENTRY},             

new int[] { android.R.id.text1}             

);

然后设定匹配器 setListAdapter(mAdapter)

最后程序的运行结果如下:

 

 

posted @ 2011-11-11 17:54  爱尚美  阅读(274)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3