選択したアイテムと残りのサービスコールに応じて、私はrecyclerViewにarrayListを設定しています。問題は、まず最初にデフォルトの選択されたアイテムが正しく取り込まれますが、データを取得するために別のアイテムを選択すると、物事が変わってしまいます:前のアイテムを選択したままにしていると、私は、正しいデータを返すために選択肢が残りのWebサービスに渡されていることを確認しました。何か案は ?ここでRecyclerViewリストが正しく表示されませんArrayList
は私のコードです:
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
は、その前の状態を保っているかのように見えます。
アダプタはどこで初期化されていますか? 'response.body()'が既にリストになっている場合、なぜそれをループしますか? リストの各要素に対して 'notifyDataSetChanged()'を呼び出さないでください。特に何も変更していないときは(データセットはあなたのファクトリストです。まだアダプタに設定されていません) 多くの問題があるので、コード全体を確認してください! – Eselfar