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