我正在根据所选项目和休息服务调用使用 arrayList 填充我的 recyclerView。问题是,首先对于默认选定的项目,它会正确填充,但是当我选择另一个项目来获取其数据时,事情变得很奇怪:它获取列表,就好像我保留了前一个项目的选择一样,它没有同步,我检查了该选择是否已传递给其余 Web 服务以带回正确的数据。有什么想法吗?
这是我的代码:
facturelist=new ArrayList<>();
Toast.makeText(getActivity().getApplicationContext(),"fac Ond"+ondSel, Toast.LENGTH_SHORT).show();
apiService = RestService.createService(SolarAPIService.class);
Call<List<ListFacture>> call = apiService.listFactureStringDate(ondSel);
call.enqueue(new Callback<List<ListFacture>>() {
@Override
public void onResponse(Call<List<ListFacture>> call, retrofit2.Response<List<ListFacture>> response) {
try {
for (ListFacture fac : response.body()) {
facturelist.add(fac);
factureAdapter.notifyDataSetChanged();
}
Collections.sort(facturelist, new Comparator<ListFacture>() {
public int compare(ListFacture o1, ListFacture o2) {
if (o1.getDateDebut() == null || o2.getDateDebut() == null)
return 0;
return o2.getDateDebut().compareTo(o1.getDateDebut());
}
});
Toast.makeText(getActivity().getApplicationContext(),"facture List"+facturelist.size(), Toast.LENGTH_SHORT).show();
factureAdapter.notifyDataSetChanged();
recyclerView.setAdapter(factureAdapter);
recyclerLay.setVisibility(View.GONE);
slideDown= AnimationUtils.loadAnimation(getActivity().getApplicationContext(),R.anim.slide_up);
recyclerLay.startAnimation(slideDown);
recyclerLay.setVisibility(View.VISIBLE);
progress.setVisibility(View.GONE);
}catch (NegativeArraySizeException nx){
progress.setVisibility(View.GONE);
layoutFactures.setVisibility(View.GONE);
notFound.setVisibility(View.VISIBLE);
errorNotFound.setText(R.string.onduleur_alerts_404);
}
}
@Override
public void onFailure(Call<List<ListFacture>> call, Throwable t) {
Log.e("Error",t.getMessage());
Toast.makeText(getActivity().getApplicationContext(),"facture List"+t.getStackTrace(), Toast.LENGTH_SHORT).show();
}
});
}
看起来factureList
保持其先前的状态。
最佳答案
您在新请求之前为fractureList创建新实例,但您没有更改适配器中的实例(或其内容)。
您应该将适配器中的列表更改为新实例或从头开始重新创建适配器。
关于java - RecyclerView列表不正确显示ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44929946/