Получение данных с сайта и отображение их из БД

241
23 ноября 2017, 03:25

Есть Json файл, через Retrofit получаю из него данные и вывожу в RecyclerView. Как я выяснил сразу данные обычно не выводят, а сначала записывают в БД и уже из БД выводят в RecyclerView.

На данный момент я на таком этапе что в коллекцию загружаю все данные полученные из Json и выводу их в RecyclerView в MainActivity.

Как мне выстроить логику чтобы при запуске приложения данные брались из БД, а если в БД их нет, то уже брались из Json и записывались в БД и уже потом отображались?

Как я понимаю должно быть так как я выше описал

Вот метод из MainActivity, который заполняет коллекцию

private void loadData() {
    final ApiService api = ApiClient.getApiService();
    Call<ItemList> call = api.getFairyTailsJSON();

    call.enqueue(new Callback<ItemList>() {
        @Override
        public void onResponse(Call<ItemList> call, Response<ItemList> response) {
            if (response.isSuccessful()) {
                itemList = response.body().getItems();
                adapter = new ItemsAdapter(MainActivity.this, itemList);
                adapter.setItemSendId(MainActivity.this);
                recyclerView.setLayoutManager(new GridLayoutManager(MainActivity.this, 1));
                recyclerView.setItemAnimator(new DefaultItemAnimator());
                recyclerView.setAdapter(adapter);
            } else {
                Toast.makeText(MainActivity.this, "Не удается найти данные для отображения", Toast.LENGTH_SHORT).show();
            }
        }
        @Override
        public void onFailure(Call<ItemList> call, Throwable t) {
            Toast.makeText(MainActivity.this, "Нет доступа к сайту", Toast.LENGTH_SHORT).show();
        }
    });
}
Answer 1

Сделай класс, к примеру DBHelper, в котором будет статический метод на проверку заполненности БД, к примеру public static void checkDB(){...}. В теле этого метода сделай проверку на наличие данных в БД. Если есть - ничего не делать, если нет - сохраняй данные в БД. Ну и в МейнАктивити просто вызывай DBHelper.checkDB();

READ ALSO
primefaces + MySQL + jsf +Tomcat

primefaces + MySQL + jsf +Tomcat

Задача состоит в том, что нужно создать просто элементарно веб приложение с интегрированной базой данных, используя технологию primefacesВ базе...

187
Синхронизация кнопок с календарем Android приложение

Синхронизация кнопок с календарем Android приложение

Есть ли такая возможность и, если есть, то каким образом можно синхронизировать некоторое количество кнопок с календарем на телефоне?

224