android - 如何访问 Firebase 方法内部的变量?
问题描述
所以我的代码中有两个引用。一个获得本月赚取的总金额,另一个获得本月花费的总金额。
我收到这段代码的传入
val incomeSumReference = database.getReference("users").child(uid).child("Incomes").child(
currentYear.toString()
).child(currentMonthInString.toString())
incomeSumReference.addValueEventListener(object : ValueEventListener {
@SuppressLint("SetTextI18n")
@RequiresApi(Build.VERSION_CODES.N)
override fun onDataChange(snapshot: DataSnapshot) {
var sum = 0.0
for (dataSnapshot in snapshot.children) {
var map = dataSnapshot.getValue() as Map<*, *>
val sumOfIncomes = map.get("itemValue")
var sumo = sumOfIncomes.toString()
var sumAsDouble: Double? = sumo.toDouble()
sum += sumAsDouble!!
var stringSum = sum.toString()
var incomeSumToFormated = formatNumberString(stringSum) // this is what I want to get
profitTextView.text = "+$" + incomeSumToFormated.toString()
}
}
override fun onCancelled(error: DatabaseError) {
}
})
这是我花钱的参考代码块
val spentSumReference = database.getReference("users").child(uid).child("Expenses").child(
currentYear.toString()
).child(currentMonthInString.toString())
spentSumReference.addValueEventListener(object : ValueEventListener {
@RequiresApi(Build.VERSION_CODES.N)
override fun onDataChange(snapshot: DataSnapshot) {
var sum = 0.0
for (dataSnapshot in snapshot.children) {
var map = dataSnapshot.getValue() as Map<String, Object>
val sumOfIncomes = map.get("itemValue")
var sumo = sumOfIncomes.toString()
var sumAsDouble: Double? = sumo.toDouble()
sum += sumAsDouble!!
var stringSum = sum.toString()
var spentSumToFormated = formatNumberString(stringSum) // this is what I want to get outside
spentTextView.text = "-$" + spentSumToFormated.toString()
}
}
override fun onCancelled(error: DatabaseError) {
}
})
我有一个名为 totalBalance 的文本视图,我想做这样的事情
var income = incomeSumToFormated.toDouble
var spent = spentSumToFormated.toDouble
var total = income-spent
totalBalance.text = total.toString
我试图在方法之外声明incomeSumFormated 和spendSumFormated 但它不起作用。
编辑
在这里,我使用我的应用程序的屏幕截图来展示我的意图。
我认为最简单的方法就是获取incomeSumFormated 和spendSumFormated 结果并将余额文本设置为它们的差异。就像我在那里写的:
var income = incomeSumToFormated.toDouble
var spent = spentSumToFormated.toDouble
var total = income-spent
totalBalance.text = total.toString
我还将发布我的 firebase 数据库的屏幕截图,向您展示它的外观。
解决方案
推荐阅读
- python - 如何从从 CSV 文件加载的自定义联合数据集构建 federated_averaging_process
- r - 您如何在 R 中组织数据并运行多项式概率?
- html - 用css在悬停时选择两个跨度
- ios - 观察我的值是否在 Swift 中达到零?
- html - (引导程序 4)容器对移动设备没有响应
- multithreading - Delphi ISAPI:当前正在运行哪个 WebModule?
- javascript - 重启浏览器后记住 Cookie
- flutter - 如何在 http post 正文中发送大型 json 数据
- python - 简化数据帧比较以过滤数据
- https - HTTPS 使用谷歌域名和第三方托管