前情提要:去面试一家外企,需求是要重复使用一个布局很多次,单单是布局的话用include就可以了,但是逻辑也要复用,而且提出了使用listview复用条目优化性能,想做成一个自定义控件。我尝试了下,感觉直接用recycleview应该也是可以的。
效果展示
效果
实现思路
添加依赖
com.android.support:recyclerview-v7:24.2.0
根据需求创建三个不同类型的item对应的布局文件
为每个类型的item创建数据bean类
创建通用的item数据bean类
为每个类型的item创建viewholder
创建Adapter类
在Activity使用recycleview
1.创建不同的item布局文件
包括一个编辑框子项,一个按钮子项,一个下拉列表子项。
布局文件就不放出来了,类似模仿下就可以。源代码项目中有。
2. 为每个类型的item创建数据bean类
封装了每个item需要赋值的数据。
3. 创建通用的item数据bean类
我们需要一个通用的数据项RecycleViewItemData来方便我们使用和进行子项的类型判断。
public class RecycleViewItemData {
//用来装载不同类型的item数据bean
T t;
//item数据bean的类型
int dataType;
public RecycleViewItemData () {
}
public RecycleViewItemData (T t, int dataType) {
this.t = t;
this.dataType = dataType;
}
public T getT () {
return t;
}
public void setT (T t) {
this.t = t;
}
public int getDataType () {
return dataType;
}
public void setDataType (int dataType) {
this.dataType = dataType;
}
}
3. 为每个类型的item创建viewholder
EditViewHolder
public class