【发布时间】:2019-10-17 01:48:44
【问题描述】:
我尝试在单击按钮时控制回收站视图项目的可见性,但它不起作用
我在 xml 中使用数据绑定
这是错误信息
java.lang.IndexOutOfBoundsException:索引:5,大小:4
在我的代码中,recycler view item 有一个 constraintLayout 和 button
并且constraintLayout有recycler view
我想显示单击按钮的项目的约束布局并隐藏其他项目的约束布局
我试图解决这个问题的方法是使用以前的位置
当按钮被点击时,隐藏前一个位置的项目并显示当前位置的项目
下面的代码是我试过的
这是活动代码中的 clickListener
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)
}
这是 AnswerHodler 类
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
}
}
binding.comment 是我接触到的约束布局
感谢您的帮助
【问题讨论】:
标签: android android-recyclerview android-databinding android-mvvm koin