Android: конвертируйте LiveData ArrayList в Gson и обратно - PullRequest
0 голосов
/ 21 октября 2018

Для моего приложения у меня есть представление переработчика, которое я использую 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 Ответ

0 голосов
/ 03 ноября 2018

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

...