【发布时间】:2020-05-09 14:51:19
【问题描述】:
我有片段和一个数组列表,我正在尝试在函数内向这个数组列表添加值。当我在函数内打印它时,它可以工作。但是,当我尝试在函数 Array List 之外打印它时,它是空的。
我可以看到我在这里遗漏了一个逻辑。
谁能帮帮我我哪里做错了?
这是片段文件。
class HourlySalesFragment : Fragment() {
val tt = arrayListOf<Double>()
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,savedInstanceState: Bundle? ): View? {
//some other code here.
val valueEventListener08_30 = object : ValueEventListener {
var subtotalList = arrayListOf<Double>()
override fun onDataChange(p0: DataSnapshot) {
if (p0.exists()) {
for(ds in p0.children) {
println("data snapshot "+ds)
val subtotal = ds.child("subTotal").getValue(Double::class.java)!!
subtotalList.add(subtotal)
textSubTotal8_30.text = subtotalList.sum().toString()
}
tt.add(subtotalList.sum())
println("ttt 8:30 "+tt)
}
}
override fun onCancelled(databaseError: DatabaseError) {
Log.d(TAG, databaseError.getMessage()) //Don't ignore errors!
}
}
println("ttt outside"+tt)
这就是我得到的结果。
ttt outside[]
ttt 8:30 [5.0]
提前致谢。
【问题讨论】:
-
在
onDataChange回调之前调用外部打印,因此此时tt为空。你想达到什么目标? -
我想在
onDataChange中填充一个数组列表并在onDataChange之外获取这些值,以便我可以将它用于其他目的。
标签: android variables android-fragments kotlin arraylist