android - RecyclerView 不显示元素
问题描述
我最近在 android studio 上开始了一个新项目。我切换到 Kotlin,这种语言让我很难受!
我已经在我的应用程序中设置了一个RecyclerView
,它工作正常。我的适配器将 aArrayList
作为参数并显示所有数据。
我在这里有两个函数为我的adapter: cardMaker()
和创建 ArrayList getEventsInfo()
。这两个函数返回一个带有 Cards 元素的 ArrayList。
ArrayList
当我使用创建的适配器调用我的适配器时,getEventsInfo
所有事件都显示正常。
但是当我使用时cardMaker()
,没有出现任何事件!
我真的无法理解这里发生了什么,这让我发疯!^^
如果默认情况下这种语言真的是顺序的,那么这种行为怎么可能?我觉得我在这里错过了一些重要的东西。
private fun cardMaker(): ArrayList<Card?> {
var newCards: ArrayList<Card?> = arrayListOf()
newCards.add(Card("UserCard", R.mipmap.logo_zenith_round, userData.firstName, userData.lastName))
val infoCards = getEventsInfo()
newCards.addAll(infoCards)
return newCards
}
private fun getEventsInfo(): ArrayList<Card?> {
var infoCards: ArrayList<Card?> = arrayListOf()
db.collection("Events")
.get()
.addOnSuccessListener { result ->
for (document in result) {
val eventsInfo = Card("EventCard",
R.mipmap.logo_zenith_round,
"${document.get("Name")}",
"${document.get("Date")}")
infoCards.add(eventsInfo)
}
}
.addOnFailureListener { exception ->
Log.w(TAG, "Error getting documents.", exception)
}
return infoCards
}
cards = cardMaker()
// RecyclerView
linearLayoutManager =
androidx.recyclerview.widget.LinearLayoutManager(this)
recyclerView = findViewById(R.id.recycler_view)
recyclerView.layoutManager = linearLayoutManager
adapter = RecyclerAdapter(cards)
recyclerView.adapter = adapter
解决方案
好吧,它与 Kotlin 的特异性无关。
正如 EpicPandaForce 所说:“Firebase 异步获取内容”
因此,我创建了变量卡的类实例:ArrayList 并在 OnSuccessListener 内的 getEventsInfo() 方法中添加了 adapter.notifyDataSetChanged()。
它现在运行良好。
谢谢!
推荐阅读
- pycharm - 识别安装为 pip install -e 的依赖项
- sql - 使用链接表的 SQL 插入/删除行查询
- cocoapods - 使用 CoreML 进行 Pod 规范 lint
- c# - 如何在 C# 中使用正则表达式删除长字符串中单词周围的引号
- php - Laravel:在作曲家 dumpautoload 之后代码工作
- go - golang go test 具体目录
- javascript - 希望在使用 JavaScript 按下按钮时关闭 safari 选项卡
- php - 如何使用 PHP Bitly v4 缩短 URL?
- javascript - 如何在 JavaScript 中将数组添加到对象中?
- java - 这些构造函数是未定义的