Kotlin 为什么';它不允许我在db.collection之外使用这两个变量吗?
它不允许我从db.collection外部读取两个变量“titleNews”和“descriptionNews”,也不允许从db.collection内部将它们添加到RecyclerView中。我可以创建一个可以从外部读取的全局变量吗Kotlin 为什么';它不允许我在db.collection之外使用这两个变量吗?,kotlin,android-recyclerview,global,Kotlin,Android Recyclerview,Global,它不允许我从db.collection外部读取两个变量“titleNews”和“descriptionNews”,也不允许从db.collection内部将它们添加到RecyclerView中。我可以创建一个可以从外部读取的全局变量吗 private fun postToList(){ val db = FirebaseFirestore.getInstance() for (i:Int in 1..2){ db.
private fun postToList(){
val db = FirebaseFirestore.getInstance()
for (i:Int in 1..2){
db.collection("news").document(i.toString()).get().addOnSuccessListener {
if (it.exists()) {
//println("TITLE: ${it.getString("title").toString()}")
val titleNews = it.getString("title").toString()
val descriptionNews = it.getString("body").toString()
}
}
titlesList.add(titleNews)
descList.add(descriptionNews)
}
}
您在if语句块中声明了它们(在
{
和}
之后的{/code>之间),因此它们是该块的私有对象,并在}
行立即从内存中清除。局部变量仅在声明它们的{
和}
中可见/可用(即“作用域”到)
无论如何,这是行不通的,因为onSuccessListener
将在将来某个时候在您放在它下面的代码行之后被调用。您需要将代码放入if语句中的侦听器块中:
private fun postToList(){
val db = FirebaseFirestore.getInstance()
for (i:Int in 1..2){
db.collection("news").document(i.toString()).get().addOnSuccessListener {
if (it.exists()) {
//println("TITLE: ${it.getString("title").toString()}")
val titleNews = it.getString("title").toString()
val descriptionNews = it.getString("body").toString()
titlesList.add(titleNews)
descList.add(descriptionNews)
}
}
}
}
如果我把它放在里面,它不会填满回收器视图,我看不到任何代码,你在用回收器视图做任何事情,所以我不能告诉你哪里出了问题。