java - 将计数器转换为最终数组
问题描述
我正在尝试实现一个计数器女巫计数来自 2 个不同集合的通知。一个集合计算好友请求,另一个计算事件请求。我想显示添加的两个集合中的数字。如果我只想显示一个集合的计数器,它可以很好地工作,但不是两者都可以,因为它说:“将计数器转换为最终数组”,因为它在内部类中。
错误在行://receivecount = map.size();
所以我的代码现在看起来像这样
mFirestore.collection("users").document(usid).collection("request").addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {
int receivecount = 0;
for (DocumentChange doc : queryDocumentSnapshots.getDocumentChanges()) {
if (doc.getType() == DocumentChange.Type.ADDED) {
String type = (String) doc.getDocument().get("Type");
final String otherID = (String) doc.getDocument().get("otherid");
mFirestore.collection("users").document(usid).collection("eventeinladung").addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {
for (DocumentChange doc : queryDocumentSnapshots.getDocumentChanges()) {
if (doc.getType() == DocumentChange.Type.ADDED) {
Map map = doc.getDocument().getData();
// receivecount = map.size();
}
}
}
});
if (type.equals("received")) {
receivecount++;
}
}
}
if(receivecount == 0){
number.setVisibility(View.INVISIBLE);
numbercontainer.setVisibility(View.INVISIBLE);
}
else {
number.setText(String.valueOf(receivecount));
}
}
});
解决方案
您不能更改内部类中的不可变值。这是一种解决方法:
像这样声明你的计数器:
int[] receivecount = {0};
然后增加里面的值:
receivecount[0]++;
推荐阅读
- java - Java class.getRessource().getPath() 在 URL 的开头添加了一个奇怪的 '/'
- javascript - JSON 文件让 20 款最常玩的游戏出现在我的首页
- scala - 如何检查函数是否在Scala中是部分的?
- excel - 将outlook中的电子邮件交叉引用到excel中的一系列数字
- python - python结构化数组组合与转换
- r - 如何从滚动回归中提取剩余标准误差
- javascript - VueJS在v-model中反转值
- sql - sqlite中的滚动平均值
- c# - 字符串未被识别为 SQLite 文件中的有效日期时间
- postgresql - 修改列和行中的值 (PSQL)