我正在从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]
预先感谢
答案 0 :(得分:1)
您必须先清除ForEach循环booksArray
,然后再添加新值。
因为当您添加新值时,它将作为数组中的下一项添加。
在使用booksArray.add(book)的位置添加新值之前,请使用booksArray.clear()
将此var booksArray = arrayListOf<Book>()
替换为var booksArray = ArrayList<Book>()
答案 1 :(得分:0)
在主类中(列表添加):-
(您的名字).add(新的您的名字(您的值));
在PoJo课中:- 创建构造函数:-
-> public constructorName(String s){(您的值)= s; }
注意:-yourpojoname == constructorName