【问题标题】:How to sum multiple values from firebase (android kotlin)如何从firebase(android kotlin)中求和多个值
【发布时间】:2021-07-21 04:52:48
【问题描述】:
【问题讨论】:
-
请不要发布您的代码截图或其他文本内容。而是发布实际文本,并使用 Stack Overflow 的格式化工具对其进行标记。您可以通过单击 Firebase Database console 上溢出菜单 (⠇) 中的“导出 JSON”链接来获取 JSON 的此信息。
标签:
android
firebase
kotlin
firebase-realtime-database
【解决方案1】:
您正在尝试使用n.getValue(Int::class.java) 获取值。但如屏幕截图所示,您已将数字存储为字符串,因此 getValue 将在此处返回 null。
要解决这个问题,您需要获取字符串并然后将其转换为数字:
n.getValue(String::class.java).toInt()
【解决方案2】:
您的数据以字符串的形式存储在 Firebase 实时数据库中。
值应存储为整数或长整数。
但是由于根据您的屏幕截图,数据已经存储为字符串,您获得的数据需要转换为整数或长整数。
我看到的另一个错误是您尚未初始化 mCountList。
private var mCountList :ArrayList<Int>? = null
更好的方法是
override fun onDataChange(p0:DataSnapshot){
// x to store all the integer values recieved from Firebase
val x = arrayListOf<Int>()
// sum to store the Sum of all the values recieved from Firebase
var sum = 0
for(i in p0.children){
val value = i.value as Int
x.add(value)
sum += value
}
// if you want you can store x data in mCountList
mCountList = x
// Display Sum with Toast
Toast.makeText(context, "total $sum", Toast.LENGTH_SHORT).show()
}