这几天我这脑子真的是不够用。客户提个需求,说是要做个列表,点一下能展开、再点一下能收起来那种。我这想半天,诶,这不就是 ExpandableList 嘛但是这玩意儿我之前没咋搞过,这可咋整?
没办法,硬着头皮上呗!我先是把相关的类给扒拉出来,一个是一级的选择,一个是二级的选择,都在 ParentStrings 里面写个 List<ChildrenStrings> 的方法。这俩类写好之后,我就开始琢磨这玩意儿到底咋用。
我先去网上搜搜,发现现在主要有两种用法:一种是往 BaseExpandableListAdapter 里面塞两个数组,另一种我瞅着有点麻烦,就先试试第一种。
然后我就开始动手。第一步,写布局!这个简单,我就建俩 xml 文件,一个是 ,一个是 ,分别对应一级列表和二级列表的样式。这一步轻车熟路,没啥难度。
第二步,写适配器!这个玩意儿我得好好说道说道。我新建一个类叫 GradeAdapter,继承自 BaseExpandableListAdapter。这里面需要重写一堆方法,什么 getGroupCount、getChildrenCount、getGroup、getChild、getGroupId、getChildId 等等,看得我头都大。不过好歹是搞明白每个方法都是干啥的,也算是没白费功夫。
- getGroupCount:这个是获取一级列表的数量;
- getChildrenCount:这个是获取对应一级列表下二级列表的数量;
- getGroup:获取一级列表的数据;
- getChild:获取对应一级列表下二级列表的数据;
- getGroupId:获取一级列表的 ID;
- getChildId:获取二级列表的 ID;
然后还有俩方法,getGroupView 和 getChildView,这两个是用来设置列表项的视图的。我在这里面把数据和视图绑定起来,总算是把这个适配器给搞定!
一步,在 Activity 里面把 ExpandableListView 和适配器关联起来,然后运行!成!列表出来,能展开也能收起来,跟客户要的效果一模一样!
这玩意儿也不难,主要就是三个步骤:
- 写布局: 和 ;
- 写适配器:继承 BaseExpandableListAdapter 并重写方法;
- 在 Activity 里关联 ExpandableListView 和适配器。
搞定收工!虽然过程有点曲折,但结果还是好的。这下又能跟客户交差,哈哈!