[英]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 循环之前清除datesWithDupes
、 paymentByDateList
和datesWithoutDupes
。
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.