【发布时间】:2020-01-22 12:38:28
【问题描述】:
我希望我的 RecyclerView 的每一行都显示集合中一个文档的所有详细信息。
我使用了完全相同的适配器代码,尽管使用不同的类进行序列化。而且效果很好。但在这种情况下,它根本不起作用。 但是代码并没有进入填充视图。
我的数据库是这样的:
reviews--Orange--vault--|
|-firstReview
|-secondReview
|-sjdeifhaih5aseoi
...
片段中我的查询和适配器:
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
viewModel = ViewModelProviders.of(this).get(ReviewViewModel::class.java)
val reviewQuery = FirebaseFirestore.getInstance().collection("reviews").document("Orange").collection("vault")
val reviewBurnOptions = FirestoreRecyclerOptions.Builder<Review>()
.setQuery(reviewQuery, object : SnapshotParser<Review> {
override fun parseSnapshot(snapshot: DocumentSnapshot): Review {
return snapshot.toObject(Review::class.java)!!.also {
it.id = snapshot.id
}
}
}).setLifecycleOwner(this)
reviewRecycler.adapter=ReviewBurnAdapter(reviewBurnOptions.build())}
class ReviewBurnAdapter(options: FirestoreRecyclerOptions<Review>) :
FirestoreRecyclerAdapter<Review, ReviewBurnAdapter.ViewHolder>(options) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {//I never reach this point
val view = LayoutInflater.from(parent.context).inflate(R.layout.row_review, parent, false)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int, item: Review) {
holder.apply {
holder.itemView.rowAuthor.text = item.author
}
}
inner class ViewHolder(override val containerView: View) :
RecyclerView.ViewHolder(containerView), LayoutContainer
}
要序列化的类:
import com.google.firebase.firestore.Exclude
import com.google.firebase.firestore.PropertyName
import java.util.*
class Review(
@get:Exclude var id: String = "DEVIL",
@JvmField @PropertyName(AUTHOR) var author: String = "",
@JvmField @PropertyName(WRITEUP) var writeup: String = "",
//@JvmField @PropertyName(MOMENT) var moment:Date=Date(1997,12,1),
@JvmField @PropertyName(RATING) var rating: Int = 0
) {
companion object {
const val AUTHOR = "author"
const val WRITEUP = "writeup"
const val RATING = "rating"
//const val MOMENT="moment"
}
}
此外,没有错误,它只是永远不会到达将生成并填充 viewHolders 的代码。
【问题讨论】:
-
我想你错过了
Adapter的一个重要方法,即getItemCount() -
除了@iCantC 注释,还要检查你是否为
RecyclerView设置了layoutManager。在此之前,请确保您从FirebaseFirestore获取数据。如果效果不佳,请尝试发布完整的 Activity 代码。 -
请添加它的屏幕截图,而不是描述您的数据库的外观。还请添加您的
Review课程的内容,也请回复@AlexMamo
标签: android kotlin android-recyclerview google-cloud-firestore firebaseui