gpt4 book ai didi

android - Firebase recyclerAdapter 将对象复制到 arrayList

转载 作者:行者123 更新时间:2023-11-29 19:16:55 27 4
gpt4 key购买 nike

final FirebaseRecyclerAdapter adapter = new FirebaseRecyclerAdapter(Service.class, R.layout.browse_service_detail, ServiceHolder.class, mReference){               
@Override
protected void populateViewHolder(ServiceHolder serviceHolder, Service service, int position) {

serviceHolder.setServiceName(service.getName());
serviceHolder.setInfo("От " + service.getPrice1());
service.setQuantitySelected(service.getQuantityEnabled());

if (Order.getInstance().getServices() != null) {
for (Service serviceFromSingleton : Order.getInstance().getServices()) {
if (serviceFromSingleton.getName() == serviceHolder.getServiceName().getText().toString()) {
serviceHolder.getServiceName().setSelected(true);
serviceHolder.getServiceName().setTextColor(getResources().getColor(R.color.yellow));
}
}
}
//add item to array
servicesList.add(service);


}
}
};

当我运行这个 Activity 时,它会将可见列表对象记录到一个数组中,但是当我向下滚动并返回时,它会将第一个元素再次复制到数组中。如何解决?对于只添加一次的项目。

最佳答案

我认为 RecyclerAdapter 中没有任何问题。我认为列表只会多次插入相同的数据。为什么不在向列表中添加数据之前检查列表是否为空,如果不为空则清除数据,然后添加新数据。

if(servicesList.isEmpty())
servicesList.add(service);

//else clear and add data
else{
servicesList.clear();
servicesList.add(service);
}

要处理数据重复,您可以使用 Set,它将忽略滚动时的重复插入。

servicesList.add(service);
Set<Service> mSet= new HashSet<Service>();
mSet.addAll(servicesList);
servicesList.clear();
servicesList.addAll(mSet);

或者使用 Set 而不是 ArrayList

有点笨拙,但会为你工作。

关于android - Firebase recyclerAdapter 将对象复制到 arrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43203743/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com