Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 对于每个循环,旧值都会重复_Android_Firebase_Kotlin_Google Cloud Firestore - Fatal编程技术网

Android 对于每个循环,旧值都会重复

Android 对于每个循环,旧值都会重复,android,firebase,kotlin,google-cloud-firestore,Android,Firebase,Kotlin,Google Cloud Firestore,我从Firebase获得了价值观。但当我尝试在数组中添加值时,问题就出现了。以前的值会重复出现。谁能告诉我如何将值放入数组中。我想在recyclerview中显示这些值 代码: bookCollection .get().addOnSuccessListener { booksSnapshot-> if (!booksSnapshot.isEmpty){

我从Firebase获得了价值观。但当我尝试在数组中添加值时,问题就出现了。以前的值会重复出现。谁能告诉我如何将值放入数组中。我想在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)
                                }

                    }
                }
            }
在主课堂上提前感谢(列表添加):-

添加(新的yourpojoname(您的价值))

在PoJo类中:- 创建构造函数:-

-->公共构造函数名称(字符串s){(您的值)=s;}


注意:-yourpojoname==constructorName

在添加新值之前,必须清除ForEach循环
booksArray
因为当您添加作为数组中下一项添加的新值时

在使用booksArray.add(book)的位置添加新值之前,请使用
booksArray.clear()


将此
var booksArray=arrayListOf()
替换为
var booksArray=ArrayList()

能否以我无法理解的正确方式发送给我。如果您的书是pojo,那么您可以尝试此-->booksArray.add(新书(书));因此,它将创建新的构造函数,您必须像这样在该构造函数中写入..-->这本书;注意:-this.book是您的pojo变量,您将在其中从pojo获取值。它清除整个数组,从而从数组中删除我的旧值。我认为这不是用户的完美解决方案
E/books: [co.myapp.myapplication.Book@d6f7f62]
E/books: [co.myapp.myapplication.Book@d6f7f62, co.syntags.myapplication.Book@93c49b0]