安卓回收器视图位置出现索引错误



当我单击按钮时,我试图控制回收器查看项目的可见性,但它不起作用

我在 xml 中使用数据绑定

这是错误消息

java.lang.IndexOutOfBoundsException: Index: 5, size: 4

在我的代码中,回收器视图项具有约束布局和按钮

和约束布局具有回收器视图

我想显示约束已单击按钮的项目的布局并隐藏其他项目的约束布局

我试图解决这个问题的方法是使用以前的职位

单击按钮时,隐藏上一个位置的项目并显示当前位置的项目

下面的代码是我尝试过的

这是活动代码中的单击侦听器

answerAdapter.onItemClickListener = object : QnaDetailAdapter.OnItemClickListener {
override fun onClick(
view: View,
position: Int,
holder: QnaDetailAdapter.AnswerHolder
) {
if (prePosition != -1)
binding.recyclerViewAnswer[prePosition].comment_holder.visibility = View.GONE
if (binding.recyclerViewAnswer[position].comment_holder.visibility == View.GONE) {
binding.recyclerViewAnswer[position].comment_holder.visibility = View.VISIBLE
prePosition = position
} else {
binding.recyclerViewAnswer[position-1].comment_holder.visibility = View.GONE
prePosition = -1
}
}
}

这是适配器的 onBindViewHodler

override fun onBindViewHolder(holder: AnswerHolder, position: Int) {
if (onItemClickListener != null) {
holder.btnComment.setOnClickListener { v ->
onItemClickListener?.onClick(v, position, holder)
}
}
holder.layout.recycler_view_comment.layoutManager = LinearLayoutManager(context)
holder.layout.recycler_view_comment.setHasFixedSize(true)
holder.layout.recycler_view_comment.adapter = adapter
val item = answerList[position]
holder.bind(item)
}

这是答案霍德勒类

class AnswerHolder(private val binding: QnaDetailItemBinding) :
RecyclerView.ViewHolder(binding.root) {
val btnComment: Button = binding.btnComment
val layout: ConstraintLayout = binding.commentHolder
fun bind(item: Answer) {
binding.item = item
}
}

绑定.注释是约束我提到的布局

感谢您的帮助

宁愿使用position,请使用holder.getAdapterPosition()

相关内容

  • 没有找到相关文章

最新更新