Как получить значения из реальных данных внутри класса репозитория Room Database - PullRequest
0 голосов
/ 18 ноября 2018

Я использую компонент Room Architecture из Android Jet-Pack в своем приложении.Я реализовал класс Repository, где я управляю своими источниками данных, такими как сервер и данные из базы данных Room.Я использую «живые» данные, чтобы получить список всех объектов, присутствующих в моей базе данных, и я прикрепил наблюдателя к своему классу активности.Все работает отлично, за исключением одной вещи, прежде чем звонить на мой сервер. Я хочу проверить, присутствуют ли данные в Room или нет, если данные присутствуют в Room. Я не хочу звонить на сервер, чтобы сэкономить ресурсы, но когда я пытаюсьполучить данные из локальной базы данных в классе репозитория, он всегда возвращает ноль. Я также пытался прикрепить к нему наблюдателя, но безрезультатно.

public LiveData<List<AllbrandsdataClass>> getAllBrands() {
    brandsDao.getallbrands().observeForever(new Observer<List<AllbrandsdataClass>>() {
        @Override
        public void onChanged(@Nullable final List<AllbrandsdataClass> allbrandsdataClasses) {
            final List<AllbrandsdataClass> listofbrandsobjectfromdb = allbrandsdataClasses;
            if (listofbrandsobjectfromdb == null) {
                Log.d(TAG, "Repository getallbrands number of brands in the DB is: 0");
            } else {
                // perform the logic to check and than fetch from server
            }
            return brandsDao.getallbrands();
        }
    }
}

вот мой getAllBrands() метод в классе интерфейса, который помечен как DAO

@Query("SELECT * FROM AllbrandsdataClass order by timeStamp  desc")
LiveData<List<AllbrandsdataClass>> getallbrands();

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

1 Ответ

0 голосов
/ 24 января 2019

После долгих поисков я нашел эти ресурсы. 1) для концептуального обзора смотрите ниже видео. youtu.be/2rO4r-JOQtA?t=340

2) для посещения документации https://developer.android.com/reference/android/arch/lifecycle/Transformations Простой пример

 LiveData dataFromRoom;
 LiveData liveDataReturnedtoModelClass = Transformations.map(dataFromRoom,    actualData-> {
  return actualData+2; //any task you want to perform on data returned by live data
});
...