Я недавно начал новый проект на андроид студии. Я перешел на Kotlin, и этот язык доставляет мне такие трудности!
Я установил RecyclerView
в своем приложении, и оно работает нормально. Мой адаптер принимает ArrayList
в качестве аргумента и отображает все данные.
У меня есть две функции, которые создают ArrayList для моих adapter: cardMaker()
и getEventsInfo()
. Эти две функции возвращают ArrayList с элементами Cards.
Когда я вызываю мой адаптер с 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