gpt4 book ai didi

Android Firebase - 计算列表中某个值的出现总数

转载 作者:搜寻专家 更新时间:2023-11-01 08:32:23 26 4
gpt4 key购买 nike

在我的项目中,用户可以创建一个列表并用项目填充该列表。然后他们可以为每个列表项设置一个类别。分为三类(是、否和未知)。

我正在尝试获取每个类别的总数。例如,一个用户的列表包含 20 个项目 --> 20 个中的 10 个被归类为"is",5 个被归类为“否”,最后 5 个被归类为“未知”。

这是我所在的地方:

ListDetailsActivity:

listItemsReference = FirebaseDatabase.getInstance().getReference()
.child("list-items")
.child(listId);

...

listItemsReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot child : dataSnapshot.getChildren()){
Legislator legislator = child.getValue(Legislator.class);
if (legislator.getCategory() != null){
Log.d("category", legislator.getCategory());
}

}
}

@Override
public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "onCancelled", databaseError.toException());
}
});

日志返回以下内容:

09-23 00:23:36.995 7359-7359/com.example.me.firebasesimplelist2 D/category: Yes
09-23 00:23:36.995 7359-7359/com.example.me.firebasesimplelist2 D/category: Yes
09-23 00:23:36.995 7359-7359/com.example.me.firebasesimplelist2 D/category: No

我将如何获取每个类别的总数?其中,"is"返回 2,“否”返回 1?

如果有帮助,这里是 JSON 的一部分:

{
"-KSKFE4MIqJOVwHI7EXW" : {
"smithJ" : {
"category" : "Yes",
"categorySet" : true,
"name" : "John Smith",
},
"bobB" : {
"category" : "Yes",
"categorySet" : true,
"name" : "Billy Bob",
},
"jonesS" : {
"category" : "No",
"categorySet" : true,
"name" : "Susy Jones",
}
}
}

我是否让事情变得比需要的更复杂?我觉得我想多了......

最佳答案

首先转到您的onCreate 方法,(在您的情况下位于“-KSKFE4MIqJOVwHI7EXW”之上) 对象列表的父级或 onCreateView(如果您使用的是 fragment )并添加:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child(yourParent);

然后,为每个类别添加一个 int:

int yes;
int no;
int unknown;

现在,添加一个ValueEventListener:

ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {

}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

onDataChange 中,您需要在每个 dataSnapshot 的子级上执行一个 foreach 循环:

@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot snapShot:dataSnapshot.getChildren(){
// Go to the next step
}
}

现在,通过将其添加到我们制作的 foreach 循环中,查看它是"is"、“否”还是“未知”:

switch(snapShot.child("category").getValue(String.class)){ //This statement is seeing what "category" is.
case "Yes":
++yes; //This is the "yes" int we made earlier; ++ increments 1.
break;
case "No":
++no; //This is the "no" int we made earlier; ++ increments 1.
break;
case "Unknown":
++unknown; //This is the "no" int we made earlier; ++ increments 1.
break;
}

最后,所有的int都会有Unknown、Yes、No的个数。

关于Android Firebase - 计算列表中某个值的出现总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39652818/

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