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

时间:2014-07-20 18:23:41

标签: android greendao

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

1 个答案:

答案 0 :(得分:3)

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

  1. 如果你这样做,每次你想使用新版本的greendao时都必须将你的解决方案合并到greendao来源。
  2. Greendao已经知道所有SQLite数据类型及其属性。
  3. 要保存图片或其他复杂数据,您可以使用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>