我是一名新的Android程序员。 目前我正在使用Greendao。我注意到它只提供了某些添加属性方法。我想知道是否有任何方法可以将其他自定义属性类型(例如,图片)添加到我的实体? 提前谢谢。
答案 0 :(得分:3)
由于greendao是开源的,你可以很好地实现这样的自定义属性类型并将它们映射到基本的SQLite数据类型。但你不应该!
要保存图片或其他复杂数据,您可以使用ByteArray
- 属性:
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将该文件的路径存储在数据库中。 / p>