GreenDao存List案例

  • Post author:
  • Post category:其他


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);
 



版权声明:本文为tongzhengtong原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。