私は自分のアプリケーションにも同じものを実装しています。コードを見て、それを行う方法を理解するでしょう。私はRetrofitを同じものに使用しました。 sharedpreferenceにあるnursejsonがヌルかどうかを確認しました。それがnullの場合は、そのsharedpreferenceからデータをロードしていない場合、さらにAPIをヒットします。
リストを更新するには、インターネットに接続できているかどうかを確認してから、その共有の優先度を削除してgetnurseメソッドを再度呼び出します。
//After Oncreate
pref = getApplicationContext().getSharedPreferences("CachedResponse", 0);
editor = pref.edit();
editor.apply();
// Call getNurses method
getNurses();
//Method to get Nurses
public void getNurses() {
nurseJson = pref.getString("nurseJson", null);
if (nurseJson != null) {
progressBar.setVisibility(View.INVISIBLE);
gson = new Gson();
nurse = gson.fromJson(nurseJson, Nurse.class);
nurseList = nurse.getNurse();
namesArrayList.clear();
for (String nurses : nurseList) {
namesArrayList.add(nurses);
}
namesAdapter.notifyDataSetChanged();
} else {
Call<Nurse> call = apiInterface.getNursesList();
call.enqueue(new Callback<Nurse>() {
@Override
public void onResponse(Call<Nurse> call, Response<Nurse> response) {
progressBar.setVisibility(View.INVISIBLE);
onItemsLoadComplete();
if (response.isSuccessful()) {
nurse = response.body();
nurseJson = new Gson().toJson(nurse);
editor.putString("nurseJson", nurseJson);
editor.commit();
nurseList = nurse.getNurse();
namesArrayList.clear();
for (String nurses : nurseList) {
namesArrayList.add(nurses);
}
namesAdapter.notifyDataSetChanged();
} else {
utility.createSnackbar(coordinatorLayout, "Error Occurred, Please Try Again Later!");
}
}
@Override
public void onFailure(Call<Nurse> call, Throwable t) {
progressBar.setVisibility(View.INVISIBLE);
onItemsLoadComplete();
if (t.getLocalizedMessage() != null) {
if (t.getLocalizedMessage().contains("Unable to resolve host")) {
utility.createSnackbar(coordinatorLayout, "Please Check Internet Connection!");
} else {
utility.createSnackbar(coordinatorLayout, "Error Occurred, Please Try Again Later!");
}
} else {
utility.createSnackbar(coordinatorLayout, "Error Occurred, Please Try Again Later!");
}
}
});
}
}