【问题标题】:Old values get duplication in For each loop旧值在 For each 循环中得到重复
【发布时间】:2019-06-01 10:52:51
【问题描述】:

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

提前致谢

【问题讨论】:

    标签: android firebase kotlin google-cloud-firestore


    【解决方案1】:

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

    使用 booksArray.clear() 在添加新值之前使用 booksArray.add(book)

    将此var booksArray = arrayListOf&lt;Book&gt;() 替换为var booksArray = ArrayList&lt;Book&gt;()

    【讨论】:

    • 它清除了整个数组,这使得我的旧值从数组中删除。我不认为这对用户来说是完美的解决方案
    【解决方案2】:

    在主类中(列表添加):-

    (Yourlistname).add(new yourpojoname(your value));

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

    --> public constructorName(String s) { (你的值) = s; }

    注意:- yourpojoname == constructorName

    【讨论】:

    • 你能以正确的方式发给我吗?我听不懂。
    • 在你的情况下 Book 是 pojo 那么你可以试试这个 --> bookArray.add(new Book(book));所以它将创建新的构造函数,你必须像这样在构造函数中编写.. --> this.book = book ;注意:- this.book 是您的 pojo 变量,您将从 pojo 中获得价值。
    猜你喜欢
    • 2015-11-10
    • 2015-10-02
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多