在一些项目中,往往有要求为ListView里的内容分类,比如按日期分类,就要把相同日期的项目放在一起。可以看一些示例图,会清楚一些:
以上根据标题来进行分类,实现代码如下:
首先是数据项的模型:
public class Data {
private String text1, text2, text3; //数据1 2 3
public Data(String text1, String text2, String text3) {
this.text1 = text1;
this.text2 = text2;
this.text3 = text3;
}
public String getText1() {
return text1;
}
public String getText2() {
return text2;
}
public String getText3() {
return text3;
}
}
因为要分类,所以需要一些类来存标题和数据Data集合:
public class Type {
private String title; //ListView头部显示的标题
private List<Data> mList; //头部对应的内容集合
public Type(String title) {
this.title = title;
mList = new ArrayList<>();
}
/**
* 添加项目
* @param data Data对象
*/
public void addItem(Data data) {
mList.add(data);
}
/**
* 获取项目
* @param position 如果position为1就返回标题
* @return
*/
public Object getItem(int position) {
if (position == 0) {
return title;
} else {
return mList.get(position - 1);
}
}
/**
* @return item数目,为集合大小+1
*/
public int size() {
return mList.size() + 1;
}
}
紧接着实现适配器Adapter,主要的逻辑设计在此部分:
public class MyAdapter extends BaseAdapter {
private static final int TYPE_HEADER =