我在回收商视图中列出了位置列表。当我按下删除图标按钮时,该按钮的项目应该被删除。
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.locationTitleTextView.text = locationList[position].name
holder.coordinatesTextView.text = locationList[position].coordinateText
holder.deleteLocationButton.setOnClickListener {
locationList.removeAt(position)
notifyItemRemoved(position)
notifyItemRangeChanged(position, locationList.size)
}
}
现在代码确实可以工作来删除项目,但是调用
notifyItemRemoved(position)
和notifyItemRangeChanged(position, locationList.size)
后生成的动画并不符合预期。
我不知道如何描述我观察到的动画,但它是这样的。 当我删除不是最后一项的任何项目时,最后一项将变得不可见,然后整个项目列表会在秒内更新。
还有其他实现让移除动画平滑而不崎岖吗?
基于这个问题我建议尝试这个改变:
holder.deleteLocationButton.setOnClickListener {
locationList.removeAt(position)
notifyItemRemoved(position)
notifyItemRangeChanged(position, locationList.size)
notifyDataSetChanged(); // *** NEW LINE
}