Если у вас есть новое обновление списка данных после добавления его в список как:
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
dialog.dismiss();
String response1=response.body().string();
try {
//geting Jason object
JSONObject jsonObject=new JSONObject(response1);
JSONArray jsonArray = jsonObject.getJSONArray("response");
for (int i=0;i<jsonArray.length();i++){
JSONObject country = jsonArray.getJSONObject(i);
JSONObject cases = country.getJSONObject("cases");
int activecaseint = cases.getInt("active");
int recoveredint =cases.getInt("recovered");
JSONObject death= country.getJSONObject("deaths");
int dtotal = death.getInt("total");
//adding items into country items
countryList.add(new countryItem(country.getString("country"),String.valueOf(activecaseint),String.valueOf(recoveredint),String.valueOf(dtotal)));
}
//adapter.swapData(countryList);
updateData(countryList);
} catch (JSONException e) {
e.printStackTrace();
}
}
, вы можете закомментировать следующую строку:
mAdapter.notifyDataSetChanged();
Добавьте эту функцию в свой класс адаптера и вызовите это когда вам нужно обновить список:
public void swapData(ArrayList<countryItem> list) {
if (list != null) {
this.arrayList.clear();
this.arrayList.addAll(list);
notifyDataSetChanged();
}
}
В объявлении глобального объекта измените тип адаптера на:
private countryAdapter mAdapter;
добавьте этот метод в mainActivity и вызывайте, когда вы хотите обновить данные :
public void updateData(ArrayList<countryItem> countryList) {
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
mAdapter.swapData(countryList);
}
});
}