GreenDao存List案例

童政通發表於2020-12-29

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

相關文章