Android: конвертируйте LiveData ArrayList в Gson и обратно

Для моего приложения у меня есть представление переработчика, которое я использую LiveData для заполнения. Каждый элемент в представлении переработчика - это объект Event, который я создал. Я использую Room и Dao для хранения этих событий и для создания этого уровня абстракции между SQL и репозиторием и контроллером пользовательского интерфейса, но проблема в том, что Dao может только сериализовать типы примитивов в JSON. Я создал конвертеры типов для преобразования между ArrayList и json, но мне нужно иметь возможность конвертировать между LiveData[ArrayList[Event]], чтобы это работало.

Пока что вот что у меня есть:

@TypeConverter
public static String fromEvent(LiveData<ArrayList<Event>> events){
    Gson gson = new Gson();
    String json = gson.toJson(events);
    return json;
}

@TypeConverter
public static LiveData<ArrayList<Event>> fromEventString (String value){
    Type eventType = new TypeToken<LiveData<ArrayList<Event>>>() {}.getType();
    return new Gson().fromJson(value, eventType);
}

Как мне преобразовать эти два типа данных с помощью библиотеки Google Gson? Lol Я, очевидно, не слишком опытен с этим.

Спасибо за любую помощь!

1 ответ

Это не совсем ответ, но я переключился с ArrayList на общий список, и он работал без проблем. Я читал кое-что о том, как Gson смотрит на суперкласс любой структуры данных, которую вы используете, чтобы узнать, как сериализовать и десериализовать, поэтому мне было интересно, если переключиться на: List [Event] list = new ArrayList () вместо ArrayList[Event] list = new ArrayList() сделает свое дело. Действительно, почему-то RoomDatabase прекрасно знал, как его сериализовать таким образом.

Другие вопросы по тегам