我正在从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/

10-12 03:59