课程/Android/移动开发
不一样的RecyclerView优雅实现复杂列表布局
-
-
最後的最後_
2017-03-27
- 当三个Model里面放的字段各不相同的情况下该怎么办呢?
***创建好三个不相同的新的Model之后,然后在MainActivity中创建三个List。
并分别给它们添加相应的数据。
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-03-27
- !!!三
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-03-27
- !!!二
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-03-27
- !!!一
-
截图
0赞 · 0采集
-
-
xzhang76
2016-12-24
- RecyclerView实现多数据类型的list和grid混编
1.原理
如果每个item是不同的布局,就会有多种数据类型,这样就需要定义多个不同的数据类型
比如
public class ItemDataModelTwo {
int avatarColor;
String name;
String content;
}
这三种数据类型有不同的布局,而且只有第三种类型的数据才会list编排,前面两种类类型的数据都是grid编排。这样就有三个不同的数据列表list
这样就需要为每个item数据标上它的类型,这样从对应的位置就能获得它的viewType,然后就可以在onCreateViewHolder()和onBindViewHolder()中根据不同viewType做不同操作。
2.初始化所有的数据
如图
3.把数据传递给adapter
public void addList(List<ModelOne> list1, List<ModelTwo> list2, List<ModelThree> list3) {
this.mList1 = list1;
this.mList2 = list2;
this.mList3 = list3;
// 为三种类型的数据列表分别置顶type类型,并初始化每个列表的初始位置
addListByType(TYPE_ONE, list1);
addListByType(TYPE_TWO, list2);
addListByType(TYPE_THREE, list3);
}
private void addListByType(int type, List list) {
mPositions.put(type, mTypes.size());
for (int i = 0; i < list.size(); i++) {
mTypes.add(type);
}
}
说明:mTypes按照位置存放每个item的类型,所以它的size是全部数据的size
mPositions存放三种数据列表的起始位置
-
截图
0赞 · 1采集