java - RecyclerView列表不正确显示ArrayList

标签 java android arraylist android-recyclerview

我正在根据所选项目和休息服务调用使用 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/

相关文章:

java - 无法在类中的两个数组之间使用相等运算符来模仿 ArrayList 的工作原理

android - 如何使用 FQL 获取 Facebook 照片标签?

java - 如何修复 javax.crypto.IllegalBlockSizeException?

java - 如何比较Java中的字符串?

java - 使用 Apache Commons FTPClient 监控进度

Android - 从计时器线程更新位图

android - 以编程方式将 TextView 颜色设置为 <selector>

java - 从 ArrayList 中的对象的参数中检索值?

java - 避免类在 ArrayList 上添加新对象

Java 从面板中删除图像