android - 如何避免listview firebase中的重复数据
问题描述
我知道这个问题已经被问过了,我跟着这个问题。
我的 Firebase 结构。
我需要在列表视图中显示费用名称。如果数据重复多次,它应该只在listview中显示一次数据,没有数据重复,如果firebase中没有重复数据,它也应该在listview中可见。
我已经尝试使用下面的代码来消除重复数据,但它不适用于在 firebase 中不重复的数据。
例如在我的火力基地
oil // repeated 2 times
petrol //repeated 1 time
我需要输出为
oil
petrol
但实际得到的输出是
oil
主要活动
listfirebaseref=FirebaseDatabase.getInstance().getReference("Expenses Details").child(username).child(monthYr);
listfirebaseref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
expenseClassList.clear();
int sum = 0;
ExpenseClass expenseClass;
Log.d("Tag", "on list Adpter");
for (DataSnapshot ds : dataSnapshot.getChildren()) {
for (DataSnapshot data : ds.getChildren()) {
String exp = data.child("expensesName").getValue(String.class);
spacecraft = new ExpensesName(exp);
expenseClassList.add(spacecraft);
Log.d("Tag", " " + expenseClassList);
}
}
for (int i = 0; i < expenseClassList.size(); i++) {
for (int j = 0; j < expenseClassList.size(); j++) {
if ((expenseClassList.get(i).equals(expenseClassList.get(j)))) {
expenseClassList.remove(j);
//j;
}
}
}
Log.d("Tag", " list Adpter");
adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
解决方案
为什么不使用 HashSet 而不是 ArrayList?
顺便说一句,你没有得到这很奇怪concurrent modification exception
。迭代时不能从列表中删除。关联
Set<ExpensesName> expenseClassList = new HashSet<>();
....
for (DataSnapshot ds : dataSnapshot.getChildren()) {
for (DataSnapshot data : ds.getChildren()) {
String exp = data.child("expensesName").getValue(String.class);
spacecraft = new ExpensesName(exp);
expenseClassList.add(spacecraft);
}
}
在这里,您的expenseClassList
遗嘱只包含唯一的字符串
推荐阅读
- php - 搜索 PHP 数组值
- spring-boot - 使用 Commons Multiparthttpservlet 解析器上传文件
- applescript - 将消息的内容设置为在 applescript 中有多行
- angular - 如何根据角度返回对象的数量动态生成扩展面板?
- blockchain - geth account new 无法使用给定密码解密密钥
- java - Solr 在自定义解析器 jar 上抛出 java.lang.noclassdeffounderror
- python - 更改 Anaconda 安装目录
- mediawiki - 我如何编辑 MediaWiki 的 HTML?
- excel - 在数据范围内查找 3 个值的组合
- python - 如何使用 Python Kubernetes 包获取应用程序的运行 pod 数量