从带有视图的房间 android 中获取数据

Posted

技术标签:

【中文标题】从带有视图的房间 android 中获取数据【英文标题】:getting data from room android with view 【发布时间】:2021-12-31 00:17:41 【问题描述】:

一周前,我学习了回收器视图,并且可以很好地使用 XML 布局中的适配器和片段以及硬编码数据或共享首选项,但现在我学习了房间数据库,我关注了谷歌开发者网站如何显示数据和一切,它对我不起作用我已经尝试了三天但没有结果。

RecyclerView recyclerView = findViewById(R.id.mainTaskView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(new TaskAdapter(tasks));

我正在尝试获取数据库中的所有项目,但它一直给我 null。

[关于创建代码][1] [1]:https://i.stack.imgur.com/Txtil.png

如果你想查看所有文件,这里是我的仓库。

我可以使用 allowQueriesInMainThread,但不建议这样做,因此我正在尝试实现房间和视图的最佳实践。

【问题讨论】:

【参考方案1】:

你需要观察者getAllTask()数据导致workThread中的数据查询,显示在mainThread中 您可以使用 Room @QUERY 函数查询数据并返回 LiveData。

@Query("SELECT * FROM tableName")
public LiveData<List<Entity>> getAllTask() 
viewModel.getAllTask().observer(this,new Observer
    @override
    public void onChange(List<Entity> list)
        adapter.setData(list)
        adapter.notifyDataSetChanged()
    
)

我忘记了 java LiveData.observer。好像是这样的

【讨论】:

以上是关于从带有视图的房间 android 中获取数据的主要内容,如果未能解决你的问题,请参考以下文章

在房间数据库 Android 中返回带有嵌套关系的空数据

获取 android 房间数据库 java.lang.IllegalArgumentException 的以下异常:@androidx.room.Database 未定义元素视图()

带有 RxJava Single 的 Android Livedata 在房间数据库中不起作用

带有rxjava的迭代列表Android房间,一一

将回收站视图数据中的 onMove() 更改更新到房间数据库

Android recyclerView 和数据绑定