如何在房间android中使用typeconverters将整数转换为字符串?

时间:2019-05-11 19:52:59

标签: android-room typeconverter

我正在开发聊天应用程序,但出现以下错误:找不到该字段的getter。  这就是为什么我想在Room中使用类型转换器将Integer转换为String的原因,但在User.java模型类下找不到任何示例

     @Entity public class User implements IChatUser {
     @PrimaryKey(autoGenerate = true)
     private Integer id;

     @ColumnInfo(name = "name")
     private String name;

     @Ignore
     Bitmap icon;

     public User() {
     }

     @Ignore
     public User(String name, Bitmap icon) {

         this.name = name;
         this.icon = icon;
     }

     @Override
     public Integer getId() {
         return this.id;
     }

     @Override
     public String getName() {
         return this.name;
     }

     public void setId(Integer id) {
         this.id = id;
     }

     public void setName(String name) {
         this.name = name;
     }

     @Override
     public Bitmap getIcon() {
         return this.icon;
     }


     @Override
     public void setIcon(Bitmap icon) {
         this.icon = icon;
     } }

在IchatUser.kt下面

    interface IChatUser {
         fun getId(): String
         fun getName(): String?
         fun getIcon(): Bitmap?
         fun setIcon(bmp: Bitmap) 
      }

1 个答案:

答案 0 :(得分:0)

要创建@TypeConverter,请创建一个Java类并将其命名为IntConverter

public class IntConverter {
    @TypeConverter
    public static String toString(int number) {
        return number == null ? null : Integer.toString(number);
    }

    @TypeConverter
    public static int toInt(String str) {
        return str == null ? null : Integer.parseInt(str);
    }
}

现在,您需要数据库来了解此TypeConverter,因此请声明以下内容:

@TypeConverters(IntConverter.class)

就在Database类的@Database批注下面