如何返回kotlin中数组中的元素数?
我试图返回数组列表中的项数,但它不起作用 这是我的代码:如何返回kotlin中数组中的元素数?,kotlin,arraylist,Kotlin,Arraylist,我试图返回数组列表中的项数,但它不起作用 这是我的代码: override fun getItemCount(): Int { val list = ArrayList<String>() val ref = dbSavedStories.child(currentUid!!) ref.addValueEventListener(object : ValueEventListener { override fun onDataChange(
override fun getItemCount(): Int {
val list = ArrayList<String>()
val ref = dbSavedStories.child(currentUid!!)
ref.addValueEventListener(object : ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
for (childSnapshot in snapshot.children) {
val key = childSnapshot.key
list.add(key.toString())
}
println(list.count())
}
override fun onCancelled(error: DatabaseError) {
TODO("Not yet implemented")
}
})
return list.count()
}
getItemCount():Int{
val list=ArrayList()
val ref=dbSavedStories.child(currentUid!!)
ref.addValueEventListener(对象:ValueEventListener{
覆盖数据更改(快照:DataSnapshot){
for(snapshot.children中的childSnapshot){
val key=childSnapshot.key
list.add(key.toString())
}
println(list.count())
}
覆盖已取消(错误:DatabaseError){
TODO(“尚未实施”)
}
})
返回列表。计数()
}
在有“println(list.count())”的行上,打印正确的数字,即5
但当我尝试返回数字时,它返回0
如何解决此问题?您添加了一个侦听器,每当数据发生更改时,它都会打印
list.count()
,但您不会等待数据更改来填充列表。因此,在您返回list.count()时,onDataChange
函数还没有被调用。我该如何修复它?最好的方法可能是在方法中显式填充list。首先从ref
获取快照。按照当前的方式,您不能接受接受Int并返回单位的lambda,该单位将在onDataChange
中调用。或用于从函数返回结果,请注意,这要求函数是可挂起的(如果您无权访问标记函数挂起,因为您似乎要覆盖它,唯一的方法是回调,如第一个选项所述)。我仍然没有设法修复此问题,如果有人能发布一个如何修复它的例子,我将非常感激,因为我正在努力修复它。非常感谢。