ImageListDownDBBean是一个我们需要存储的数据Bean对象,里面有自增长的id,itemID,tag,downTag,模糊图集合mDimImageList,原图集合mReallyImageList,在此,我们用mDimImageList,来做案例,原图同理可得!
1.这个是GreenDao的Bean对象(只截取了相对应的字段,其他可以通过在Android Studio中使用Build> Make Project,重写build项目会生成相对于的Dao对象)
@Entity
public class ImageListDownDBBean {
@Id(autoincrement = true)
private Long id;
@Unique
private String itemID;
private String tag; //这个是查询是否存在的条件
private String downTag; //默认0没有点击下载离线模式下不加载,点击了下载设置更新为1,离线模式显示
@Convert(columnType = String.class, converter = DimConverter.class)
private List<DimImageBean> mDimImageList;
@Convert(columnType = String.class, converter = ReallyConverter.class)
private List<ReallyImageBean> mReallyImageList;
在此我们存储mDimImageList,和mReallyImageList,两个List,这里用mDimImageList来做案例
2.先写一个模糊图数据Bean
/**
* LoveLin
* <p>
* Describe 模糊图
*/
public class DimImageBean {
private String dimFilePath;
public String getDimFilePath() {
return dimFilePath;
}
public void setDimFilePath(String dimFilePath) {
this.dimFilePath = dimFilePath;
}
@Override
public String toString() {
return "DimImageBean{" +
"dimFilePath='" + dimFilePath + '\'' +
'}';
}
}
3.再写该类的converter,实现PropertyConverter,从而实现存储list
/**
* LoveLin
* <p>
* Describe 实现PropertyConverter,从而实现存储list
*/
public class DimConverter implements PropertyConverter<List<DimImageBean>,String> {
//将数据库中的值,转化为实体Bean类对象(比如List<String>)
@Override
public List<DimImageBean> convertToEntityProperty(String databaseValue) {
if (databaseValue==null){
return null;
}
List<String> list_str = Arrays.asList(databaseValue.split(","));
List<DimImageBean> list_transport = new ArrayList<>();
for (String s : list_str) {
list_transport.add(new Gson().fromJson(s, DimImageBean.class));
}
return list_transport;
}
//将实体Bean类(比如List<String>)转化为数据库中的值(比如String)
@Override
public String convertToDatabaseValue(List<DimImageBean> arrays) {
if (arrays == null) {
return null;
} else {
StringBuilder sb = new StringBuilder();
for (DimImageBean array : arrays) {
String str = new Gson().toJson(array);
sb.append(str);
sb.append(",");
}
return sb.toString();
}
}
}
到此,就完成了对list集合数据的存储,已下是简单的使用案例~~
//~~~~~~这个是简单的案例~~~~~~~~
//创建数据库Bean对象
mImageListBean = new ImageListDownDBBean();
ArrayList<DimImageBean> list00 = new ArrayList<>();
for (int i = 0; i < dimImageList.size(); i++) {
//创建DimImageBean数据存储单条数据
DimImageBean dimBean = new DimImageBean();
dimBean.setDimFilePath(dimImageList.get(i));
list00.add(dimBean);
}
//存入模糊图片路径的list
mImageListBean.setMDimImageList(list00);