Я использую PullToRefresh
для RecyclerView
. Каждый раз, когда новые данные отображаются в Recyclerview, они сохраняются в SharedPreference
. Если подключение к Интернету отсутствует, я показываю данные на RecyclerView
с SharedPreference
. Когда PullToRefreshвыполняется несколько раз, одни и те же данные из Recyclerview сохраняются в Preference.And, когда подключение к Интернету пропадает, а данные выбираются из Preference, в Recyclerview показываются повторяющиеся записи. Как этого избежать?
Это код для PullToRefresh
pullRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
current.clear();
adapter.notifyDataSetChanged();
pullRefresh.setRefreshing(true);
adapter.notifyDataSetChanged();
checkInternet();
}
}, 1000);
}
});
Это код для checkInternet
. Если в Интернете доступны последние данные из веб-сервиса и сохранены в Preferene, в противном случае данные из Предпочтения
public void checkInternet(){
String NetworkStatus = biz.fyra.bookapp.utils.NetworkStatus.checkConnection(getContext());
if (NetworkStatus.equals("false")) {
current.clear();
String 1stJSON = firstStatus.getString("firstList", "");
String 2ndJSON = secondData.getString("secondListList", "");
if (!1stJSON.equals("") && !2ndJSON.equals("")) {
try {
readCachedData(1stJSON, 2ndJSON);
} catch (JSONException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
snackbar=Snackbar.make(recyclerView,"You are Offline.",
Snackbar.LENGTH_INDEFINITE).setAction("Retry", new View.OnClickListener() {
@Override
public void onClick(View v) {
checkInternet();
}
});
snackbar.show();
}else{
current.clear();
getData();
}
}
getData
являются фактическими вызовами WebService.Как решить эту проблему?