android - 从房间数据库中获取数据到 livedata 对象

标签 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();
}

ViewModel

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

通常我会做的是观察 fragment 上的 LiveData,然后任何更改都会从实时数据对象中获取数据。事实是数据并没有“改变”。

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

最佳答案

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

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

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

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

关于android - 从房间数据库中获取数据到 livedata 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49356599/

相关文章:

Android 实时数据 - 观察配置更改后始终触发

android - 获取值多选listview android

android - 三星note 2和note 3屏幕桶

android - Kotlin - Elvis 运算符的不当行为

java - 房间 : @Embedded vs @TypeConverters

android - 房间数据库迁移

android - 聊天应用程序用户如何才能再次在线获得离线时发送给他们的消息

android - 如何正确组合两个实时数据对象

Android viewModel savedStateHandle

java - 媒体播放器搜索栏搜索无法正常工作