繁体   English   中英

为什么我的 recyclerView 中总是出现重复的列表?

[英]why i keep getting duplicated lists in my recyclerView?

谁能告诉我我在这里做错了什么,每次我启动应用程序时,我都会使用recyclerView和 livedata,它会生成一个随机列表,有时它会充满重复项。 这是将数据分配给适配器的代码:

adapter = new PaymentsByDateParentAdapter(getContext());
    recyclerView.setAdapter(adapter);

    viewModel = new ViewModelProvider(this).get(SchoolViewModel.class);

    viewModel.getAllPayments().observe(getViewLifecycleOwner(), new Observer<List<Payment>>() {
        @Override
        public void onChanged(List<Payment> payments) {
            for (Payment i : payments) {
                datesWithDupes.add(i.getPaymentDate());
            }
            for (String i : datesWithDupes) {
                if (!datesWithoutDupes.contains(i)) {
                    datesWithoutDupes.add(i);
                }
            }
            for (String date : datesWithoutDupes) {
                viewModel.getPaymentsByDate(date).observe(getViewLifecycleOwner(), new Observer<List<Payment>>() {
                    @Override
                    public void onChanged(List<Payment> payments) {
                        PaymentByDate paymentByDate = new PaymentByDate(date, payments);
                        paymentByDateList.add(paymentByDate);
                        adapter.setPayments(paymentByDateList);
                    }
                });
            }
        }
    });

在 for 循环之前清除datesWithDupespaymentByDateListdatesWithoutDupes

datesWithDupes.clear();
datesWithoutDupes.clear();
paymentByDateList.clear();

for (Payment i : payments) {
    datesWithDupes.add(i.getPaymentDate());
}
for (String i : datesWithDupes) {
    if (!datesWithoutDupes.contains(i)) {
        datesWithoutDupes.add(i);
    }
}
for (String date : datesWithoutDupes) {
    viewModel.getPaymentsByDate(date).observe(getViewLifecycleOwner(), new Observer<List<Payment>>() {
        @Override
        public void onChanged(List<Payment> payments) {
            PaymentByDate paymentByDate = new PaymentByDate(date, payments);
            paymentByDateList.add(paymentByDate);
            adapter.setPayments(paymentByDateList);
        }
    });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM