从livingata对象中获取房间数据库中的数据

时间:2018-03-19 05:53:19

标签: android android-room android-livedata

美好的一天,

我需要一些LiveData和Room数据库的帮助。我的想法是,我希望允许用户通过单击按钮来备份Room数据库的内容,然后将该数据库的内容保存为JSON文件。

我遇到的问题如下:

当用户单击按钮备份数据库时,我想从数据库中获取数据。我的应用程序结构如下:

@Query("SELECT * FROM media")
LiveData<List<Media>> getAll();

存储库

private final MediaDao mMediaDao;
public LiveData<List<Media>> getListOfMedia() {
    return mMediaDao.getAll();
}

视图模型

public LiveData<List<Media>> getMedia() {
    return mMediaRepository.getListOfMedia();
}

通常我要做的是观察片段上的LiveData,然后任何更改都会从实时数据对象中获取数据。事情是数据不会“改变”每个人说。

那么当用户点击按钮时,如何从Livedata对象中获取数据?

1 个答案:

答案 0 :(得分:3)

这可能有点晚,但是您可以为同一数据集创建许多查询方法。

例如,我有两种获取相同数据的方法,一种返回一个LiveData<List<Media>>对象,另一种返回List<Media>,就像这样:

@Query("SELECT * FROM media")
LiveData<List<Media>> getLiveAll();

@Query("SELECT * FROM media")
List<Media> getAll();