我正在从Firebase获取值(value)。但是,当我尝试在数组中添加值时,就会重复出现以前的问题。谁能告诉我如何将值放入Array中。我想在recyclerview中显示这些值。
代码:
bookCollection
.get().addOnSuccessListener {
booksSnapshot->
if (!booksSnapshot.isEmpty){
var booksArray = arrayListOf<Book>()
for (bookSnapshot in booksSnapshot.documents){
val hashmap = bookSnapshot.data
hashmap?.put("id", bookSnapshot.id)
bookCollection.document(bookSnapshot.id).collection("pages")
.get().addOnSuccessListener {
pagesSnapshot->
hashmap?.put("page_count", pagesSnapshot.documents.size)
val bookData = Gson().toJson(hashmap)
val book = Gson().fromJson<Book>(bookData, Book::class.java)
booksArray.add(book)
}
}
}
}
记录数组:
E/books: [co.myapp.myapplication.Book@d6f7f62]
E/books: [co.myapp.myapplication.Book@d6f7f62, co.syntags.myapplication.Book@93c49b0]
提前致谢
最佳答案
您必须在添加新值之前清除ForEach循环booksArray
。
因为当您添加新值时,它将作为数组中的下一项添加。
在使用booksArray.add(book)的位置添加新值之前,先使用booksArray.clear()
将此var booksArray = arrayListOf<Book>()
替换为var booksArray = ArrayList<Book>()
关于android - 旧值在For Each循环中重复,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56406059/