android-如何使用Room从数据库获取简单列表?

时间:2018-10-17 05:18:05

标签: android android-room android-livedata

我在我的Android应用中使用了组件库。在某些情况下,需要使用Livedata并观察其数据,但是有时我只是想获取一些普通列表而不是Livedata,我该怎么做?简单查询数据库

p.s:我使用getValue(),但它返回null

2 个答案:

答案 0 :(得分:1)

DAO 中使用类似的查询:

@Query("SELECT * FROM TABLE_NAME")
fun getListOfData(): List<Data>?

这将为您提供表中的数据列表,就像在@Query参数中传递的选择查询一样。


编辑:

主线程调用时,您可以使用处理程序在后台执行以下工作:

//Method from where you want your data from Db.
fun getMyList() {
    Thread {
        (your db object).(your dao).getListOfData()
    }.start()
}

,您可以像下面的(尽管我不推荐这样)那样,让您的数据库在构建房间数据库时在主线程上执行:

Room.databaseBuilder(
            ...
        )
                .allowMainThreadQueries()
                .build()

答案 1 :(得分:0)

您可以简单地在Dao中编写查询,查询的返回类型为List,然后在需要这些数据的ViewModel中调用。

示例:

// YourDao

 @Query("SELECT * FROM YourTable")
List<YourModel> getAllYourTableData();

//您的回购

public static List<YourModel> getAllData(){
return getYourModelDao.getAllYourTableData();
}

//您的ViewModel

public void someFunctionWhereYouNeedNormalData(){
//assign to list
YourRepo.getAllData();
}

假设您了解android arch组件中的回购模式。