1、ExpandableListView: ExpandableListView 是继承自ListView的一个ViewGroup,用它可以把一个ListView变成一个可以折叠展开的列表,它也被称为可展开列表,它使用类似树形结构的方式在屏幕上显示多个列表项,你可以按照自己的需求,让它有层级关系和组别,当然还可以让其有动态展开和折叠功能,非常适合创建菜单等界面类型。
2、功能介绍: ExpandableListView 包含一个列表,它可以把Payloads设置为子元素的列表,然后根据设置的属性让ExpandableListView来折叠或展开特定的二级或多级元素,它提供了一个逻辑式的层次结构,这使得用户能够更容易查看复杂的信息,使整个界面看起来整洁而不是眼花缭乱。ExpandableListView可以被用来做文件夹的方式管理字段分组,也可以被用来实现菜单。
3、应用场景: 在Android APP的开发中,ExpandableListView 经常被选择作为用户需要点击展开和折叠的内容管理器,常见的应用场景有配置文件的树形管理,菜单的集合管理,用户实现按类别分组和筛选的功能等等。
4、属性介绍:ExpandableListView有很多属性,比如collapsible,这个属性是用来控制ListView是否可以展开和折叠,还有 childDivider,用来控制每一级ListView子项之间的间隔线,还有dividerHeight 属性,它可以用来控制每一级ListView子项与下一级ListView子项之间的间隔距离,还有indicatorRight等属性,用来控制展开折叠指示器的位置等等。
5、典型代码:
ExpandableListView属于android.widget包,使用它之前,可以在 AndroidManifest.xml 文件里加入如下声明:
在布局文件里,如下:
android:id="@+id/expandablelistview" android:layout_width="match_parent" android:layout_height="match_parent" android:childIndicatorRight="@drawable/ic_expandable_list_indicator" android:groupIndicator="@drawable/ic_expandable_list_indicator" android:indicatorRight="@drawable/ic_expandable_list_indicator" /> 在Activity里,其中 parentList 是父项数据,子项数据为 childList: ExpandableListView mExpandableListView = findViewById(R.id.expandablelistview); // 根据列表数据初始化Adapter ExpandableListViewAdapter mAdapter = new ExpandableListViewAdapter(parentList,childList); // 设置Adapter mExpandableListView.setAdapter(mAdapter); // 设置Item点击事件 mExpandableListView.setOnChildclickListener(new OnChildClickListener(){ @Override public void onChildClick(ExpandableListView parent, View v, int groupPosition,int childPosition,long id){ // 对子项进行操作 // TODO } 1、expandablelistview简介:expandablelistview是android中比较常用的ListView之一,它可以将数据以分组树形结构展开,支持一级和二级分组,每组支持一个子标题和多个子项,具有复选框和单选框功能等特点。 2、expandablelistview结构:expandablelistview的结构是一个expandablelistadapter,它的两个强大的方法在它内部构建了数据的树形结构: getGroupCount():返回分组总数; getChildrenCount(int groupPosition):返回指定组中的子项总数; getGroupView:返回分组的视图,通常为一个TextView; getChildView:返回ChildView,也就是子项的视图,通常是一个ListView。 3、expandablelistview的实现步骤: (1)创建布局文件,设置一个expandablelistview; (2)创建数据源; (3)自定义一个expandableListAdapter并复写它的六个方法: (a)getGroupCount():返回分组总数; (b)getChildrenCount(int groupPosition):返回指定组中的子项总数; (c)getGroupView:返回分组的视图,通常为一个TextView; (d)getChildView:返回ChildView,也就是子项的视图,通常是一个ListView; (e)isChildSelectable:判断子分组是否可选择; (f)hasStableIds:判断每个组成员是否有唯一的标示。 (4)给expandablelistview设置adapter。 (5)expandablelistview的一些回调监听事件,如onGroupExpanded(),onChildClick(),onGroupCollapsed()等。 4、expandablelistview的应用: expandablelistview可以用于常见的两级树分类展示,如商品类型、订单列表、联系人等,特别是在做联系人通信录时,它可以按照字母排序做按首字母来分组,用一个expandablelistview就可以做到,节省编程的时间成本。它同时也可以用于日历或者图书、电影分类项目中,如在网站开发中有些地方使用很多,可以减少很多不必要的编程工作。