先是集合删除具体的哪一条数据
list.removeAt(position)
调用adapter的删除动画,这句代码实际就是起一个动画效果,同理添加方法
notifyItemRemoved(position)
将集合数据重新和界面呈现的重新绑定,不加这句就会造成实际的集合数据和界面的数据不一致导致报错
notifyItemChanged(position)
这里还有个问题就是
override fun onBindViewHolder(holder: MyViewHolder, position: Int) { holder.bindData(context, list[position]) holder.view.setOnClickListener { list.removeAt(holder.adapterPosition) notifyItemRemoved(holder.adapterPosition) notifyItemChanged(holder.adapterPosition) } }
删除的位置标志位不能用position,就像我开始写的一样,
因为onBindViewHolder() 方法中的位置参数 position 不是实时更新的,所以在我们删除元素后,item 的 position 没有改变。
所以要用holder.adapterPosition来获取位置