Android - Как получить простой список из БД с помощью Room? - PullRequest
0 голосов
/ 17 октября 2018

Я использую библиотеки компонентов в моем приложении для Android.в некоторых случаях необходимо использовать Livedata и наблюдать за его данными, но иногда я просто хочу получить обычный список, а не Livedata. Как я могу это сделать?простой запрос к БД

ps: я использую getValue (), но он возвращает null

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Вы можете просто написать запрос в вашем Dao, который имеет тип возврата как List, и позвонить из вашей ViewModel, где вам нужны эти данные.

Пример:

// YourDao

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

// YourRepo

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

// Your ViewModel

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

Предполагается, что у вас есть знания о шаблоне репо в компонентах арки Android.

0 голосов
/ 17 октября 2018

Используйте запрос, подобный этому, в 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()
...