如果要实现一个消息列表,通常会选择用recycleView来实现,比如微信,QQ,这一种,每一个Item项都是相同的,处理起来只需:
1.数据源,2.适配器,3.Item项布局,4.recycleview布局
今天要说的是不规则列表该如何实现,先上图看看效果:
在这里提供一个解决思路:
1.整个页面放置一个recycleView
2.在每个Item项中再放置一个recycleView。
3.操作数据源,数据源分组。
在这里我们重点说一下嵌入的recycleView与被嵌入的recycleView
主recycleView:MsgAdapter
内嵌recycleView:LeftDeletAdapter
由于在主recycleView里的每一项都嵌入一个recycleView,因此,在MsgAdapter里的bindViewHolder里做内嵌recycleView 的初始化以及数据绑定:
接下来是操作数据源了:
我们从后台数据库拿到的数据为:
根据数据写一个实体类(截出部分代码):
通过build.gradle导入gson包:
通过Gson转化成实体类:
然后是实现数据的不规则分组:
1.我们需要的是所有数据中的不同的日期
2.同时我们需要相同的日期下的所有数据。
因此我们定义一个数据操作类,其中
一个 返回数据 的 集合 来存放返回来的每一条数据,
一个 String 用来存放日期。
要进行不规则分组,我们首先要知道List与Set的区别:
List 是有序可重复的集合,Set是无序且不可重复的:
因此实现分组的算法如下:
一些注释:
1. 我们传入一个返回的数据集合进行操作,返回一个操作数据类的集合
2. 新建返回数据类的集合。
3. 遍历 返回数据 集合,在遍历中拿到每一段返回数据,
4. 如果set集合里不包含日期,初始化 操作数据类 对象 ,set集合 添加日期,初始化返回数据集合 , 操作数据类添加 操作数据对象
5. 数据返回类集合里添加数据每一段返回数据。
如果注释得不够明白还是看代码吧~~~~
至此完成不规则分组~~