我是一个新的android程序员。目前我使用的是Greendao。我注意到它只提供某些add属性方法。我想知道是否有任何方法添加其他自定义属性类型(例如,图片)到我的实体?
由于greendao是开源的,您可以很好地实现这样的自定义属性类型并将它们映射到基本的sqlite数据类型。但你不应该!
- 如果你这样做,你将不得不合并你的解决方案到greendao源每次你想使用一个新的版本/发布的greendao。 据我所知,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将该文件的路径存储在数据库中