如何在greendao中添加自定义属性类型



我是一个新的android程序员。目前我使用的是Greendao。我注意到它只提供某些add属性方法。我想知道是否有任何方法添加其他自定义属性类型(例如,图片)到我的实体?

由于greendao是开源的,您可以很好地实现这样的自定义属性类型并将它们映射到基本的sqlite数据类型。但你不应该!

  1. 如果你这样做,你将不得不合并你的解决方案到greendao源每次你想使用一个新的版本/发布的greendao。
  2. 据我所知,Greendao已经用它的属性覆盖了所有sqlite数据类型。

要保存图片或其他复杂的数据,您可以使用ByteArray -property:

Entity entity = schema.addEntity("MyTest");
entity.addByteArrayProperty("picture");

在您的实体的KEEP-SECTION中,您可以添加转换方法:

public static byte[] bitmap2bytes(Bitmap bitmap) {
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
    return stream.toByteArray();
}
public static Bitmap bytes2Bitmap(byte[] byteArray) {
    return BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
}

最后使用:

myTestObj.setPicture(MyTest.bitmap2bytes(bitmap));

Bitmap bmp = MyTest.bytes2bitmap(myTestObj.getPicture());

备注:在图片或其他大数据的情况下,您可以遵循将数据作为文件存储在设备上的方法,并使用String-property将该文件的路径存储在数据库中

相关内容

  • 没有找到相关文章

最新更新