【问题标题】:Android: Convert LiveData ArrayList to Gson and back againAndroid:将 LiveData ArrayList 转换为 Gson 并再次返回
【发布时间】:2018-10-21 18:56:45
【问题描述】:

对于我的应用程序,我有一个使用 LiveData 填充的回收器视图。回收站视图中的每个项目都是我创建的一个事件对象。我正在使用 Room 和 Dao 来存储这些事件并在 SQL 与存储库和 UI 控制器之间创建抽象层,但问题是 Dao 只能将 primitize 类型序列化为 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 库在这两种数据类型之间进行相互转换?哈哈,我显然对此不太有经验。

感谢您的帮助!!

【问题讨论】:

    标签: android json android-recyclerview dao android-livedata


    【解决方案1】:

    这并不完全是一个答案,但我从 ArrayList 切换到了通用 List,它可以无缝地工作。我正在阅读有关 Gson 如何看待您用来学习如何序列化和反序列化的任何数据结构的超类的内容,所以我想知道是否切换到:List[Event] list = new ArrayList() 而不是 ArrayList[Event] list = new ArrayList() 可以解决问题。事实上,出于某种原因,RoomDatabase 完全知道如何以这种方式对其进行序列化。

    【讨论】:

      猜你喜欢
      • 2014-11-13
      • 2015-01-19
      • 2013-02-18
      • 1970-01-01
      • 1970-01-01
      • 2017-01-01
      • 2011-10-30
      • 2011-01-13
      • 2019-10-14
      相关资源
      最近更新 更多