Я пытаюсь реализовать раздел комментариев, который позволяет пользователю публиковать и отвечать на другие комментарии.
У меня есть список комментариев, у каждого комментария есть список ответов, этот список может быть нулевым, если ответов нет.
Сначала я подумал об использовании двух представлений рециркулятора, затем увидел сообщение , в котором говорится, что использование 2 RecyclerViews - не лучший подход.
Комментарий и ответ имеют одинаковую компоновку, но у поля слева осталось 24dp.
Проблема
Моя проблема начинается с onBindViewHolder
position
будет go от 0 до комментариев + ответов
Например:
Список, содержащий 2 объекта с 5 ответами каждый, в onBindViewHolder
позиция = 3 будет reply[2]
из comments[0]
= comments[0].reply[2]
позиция = 6 будет comments[1]
Как определить комментарий индекс и индекс ответа с позиции? Я чувствую себя потерянным здесь
var comments = listOf<CommentModel>()
set(value) {
field = value
notifyDataSetChanged()
}
class ViewHolder(var binding: ItemForumCommentBinding) : RecyclerView.ViewHolder(binding.root) {
fun bind(item: CommentModel){
binding.commentModel = item
}
fun bind(item: ReplyModel){
binding.commentModel = item
(binding.commentGuideline.layoutParams as ConstraintLayout.LayoutParams).guideBegin = 24.px
}
}
override fun onBindViewHolder(holder: ViewHolder, position: Int){
//Bind comment or reply according to the position
//holder.bind(comments[x].replys[y]) or holder.bind(comments[x])
}