博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 使用ExpandableListView打造可展开列表组件
阅读量:2020 次
发布时间:2019-04-28

本文共 2494 字,大约阅读时间需要 8 分钟。

在项目中要用到,需要实现的效果如下:

1、可遍历1-12个月份。

2、可查看每个月份下对应的照片。

运行效果如下:

实现思路:

一开始打算使用ScrollView嵌套一个LinearLayout,然后add进不同子项,不过这样写代码量会比较多,而且要做子项点击事件处理,逻辑会稍微复杂一点。最后使用了ExpandableListView组件,将数据全部抽离出来,依次填进去就搞好了,十分方便,在此记录一下。

代码步骤:

1、首先是布局文件: newphoto_layout.xml

2、初始化组件:

ExpandableListView eblv_newphoto;        eblv_newphoto = (ExpandableListView) findViewById(R.id.eblv_newphoto);  MyExpandableListAdapter adapter = new MyExpandableListAdapter(data);        eblv_newphoto.setAdapter(adapter);
3、编写MyExpandableListAdapter类:

public class MyExpandableListAdapter implements ExpandableListAdapter {        String[] monthEnames = {"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};        List
mdata; String[] colors = {"#B36AE1","#c62817","#022550", "#118730","#1167bd","#560809", "#f4d23e","#56a9f6","#f18f2e", "#3b214c","#ea5e5b","#72be49" }; public MyExpandableListAdapter(List
data ) { this.mdata = data; } @Override public void registerDataSetObserver(DataSetObserver observer) { } @Override public void unregisterDataSetObserver(DataSetObserver observer) { } @Override public int getGroupCount() { return monthEnames.length; } @Override public int getChildrenCount(int groupPosition) { int num = 0; for (int i = 0;i
tempChildlist = new ArrayList<>(); List
resultChildlist = new ArrayList<>(); //得到该月份下所有的PhotoPicture for (int i = 0;i
resultChildlist = (List
) getChild(groupPosition,childPosition); if (resultChildlist.size() ==1) { NGImageloadHelper.displayImage(img1,Config.IMG_AUDIO_PATH +resultChildlist.get(0).getPath()); } else if (resultChildlist.size() ==2) { NGImageloadHelper.displayImage(img2,Config.IMG_AUDIO_PATH +resultChildlist.get(1).getPath()); } return item_photorv; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } @Override public boolean areAllItemsEnabled() { return false; } @Override public boolean isEmpty() { return false; } @Override public void onGroupExpanded(int groupPosition) { } @Override public void onGroupCollapsed(int groupPosition) { } @Override public long getCombinedChildId(long groupId, long childId) { return 0; } @Override public long getCombinedGroupId(long groupId) { return 0; } }

你可能感兴趣的文章
Java 序列化和反序列化
查看>>
Spring事务配置的五种方式【转】
查看>>
[转]利用 Linux crontab 定时执行 PHP
查看>>
新人讨论一:事务和两阶段提交
查看>>
HTTP高并发测试
查看>>
获取表单中checkboxgroup所有选中值
查看>>
群晖如何实现不在同一网段的访问
查看>>
使用自签证书建立https连接
查看>>
知识图谱学习笔记(五)——实体识别(1)
查看>>
Pytorch框架学习(10)——损失函数
查看>>
pytorch框架学习(17)——模型的保存与加载
查看>>
搭建Spark集群详细步骤(2)
查看>>
搭建Spark集群详细步骤(3)
查看>>
【解决问题】OpenCV(3.4.1) Error: Parsing error (xx.yaml(13): Incorrect indentation) in icvYMLParseValue
查看>>
Qt之QLineEdit详解(附源码)
查看>>
浅析“高斯白噪声”,“泊松噪声”,“椒盐噪声”的区别
查看>>
Google Protocol Buffer 的使用和原理
查看>>
为什么要使用工厂模式
查看>>
源码安装MYSQL 5.5+版本全攻略
查看>>
apache 开启Rewrite
查看>>