Почему я получаю сообщение об ошибке при попытке сохранить список в базе данных Room с помощью преобразователя типов? - PullRequest
0 голосов
/ 14 июля 2020

Я хочу сохранить список типа Integer в базе данных Room. Для этого я написал конвертер, который выглядит так:

public class TypeConverter {

static Gson gson = new Gson();

@androidx.room.TypeConverter
public static List<Integer> stringToIntegerList(String data) {
    if (data == null) {
        return Collections.emptyList();
    }

    Type listType = new TypeToken<List<Integer>>() {
    }.getType();

    return gson.fromJson(data, listType);
}

@androidx.room.TypeConverter
public static String someObjectListToString(List<Integer> someObjects) {
    return gson.toJson(someObjects);
}
}

Вот часть класса модели:

@TypeConverters(TypeConverter.class)
List<Integer> colors_ids;

А также класс базы данных:

@Database(entities = {Flower.class}, version = 2)
@TypeConverters(TypeConverter.class)

И когда я получаю список, я получаю сообщение об ошибке:

Attempt to invoke interface method 'int java.util.List.size()' on a null object reference

Значит, список нулевой. Что я делаю не так? Спасибо за любую помощь.

EDIT:

Вот как я сохраняю массив в базе данных Room:

dao.insert(new Flower(something, something, ..., new ArrayList<Integer>(){{add(R.drawable.flower_clove_red); add(R.drawable.flower_clove_pink);}}));

1 Ответ

0 голосов
/ 14 июля 2020

Класс преобразователя типов в порядке. Проблема заключалась в моем способе заполнения базы данных.

...