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 прекрасно знал, как его сериализовать таким образом.