Как преобразовать целое число в строку с помощью typeconverters в комнате Android? - PullRequest
0 голосов
/ 11 мая 2019

Я разрабатываю приложение чата, но получаю следующую ошибку: Не удается найти получатель для поля.Вот почему я хочу преобразовать Integer в строку, используя преобразователи типов в Room, но я не нашел ни одного примера ниже моего класса 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 голосов
/ 12 мая 2019

Чтобы создать @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 в классе базы данных

...