Странная анимация при удалении элемента из RecyclerView

#android #kotlin #android-recyclerview

#Android #kotlin #android-recyclerview

Вопрос:

У меня есть RecyclerView, заполненный val microphones: MutableList<Microphone> . В макете строки есть кнопка для удаления этого элемента из списка, который мне удалось запустить, но анимация идет не так. Похоже, что при обновлении RecyclerView удаляется последний элемент в списке, затем правильный элемент, а затем весь список под удаленным элементом анимируется до правильного состояния.

Вот соответствующие биты адаптера RecyclerView:

 class RecyclerViewAdapter(
    val microphones: MutableList<Microphone>
): RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder>() {

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
    val cellForRow = LayoutInflater.from(parent.context).inflate(R.layout.favorites_row, parent, false)
    return ViewHolder(cellForRow)
}

override fun getItemCount(): Int {
    return microphones.size
}

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    val microphone = microphones[position]

    holder.bind(microphone)

    holder.favoritesButton.setOnClickListener {
        microphones.remove(microphone)
        notifyItemRemoved(position)
    }
}

class ViewHolder(val view: View) : RecyclerView.ViewHolder(view) {

    val modelText = view.findViewById<TextView>(R.id.model_textView)
    val brandText = view.findViewById<TextView>(R.id.brand_textView)
    val favoritesButton = view.findViewById<ImageButton>(R.id.btnFavorite)

    fun bind(
        microphone: Microphone,
    ) {

        modelText.text = microphone.model
        brandText.text = microphone.brand
        }
    }
}
  

Вот экранная запись проблемы:
https://imgur.com/a/pJt3KwH

Комментарии:

1. Я полагаю, что проблема, вероятно, заключается в том, как вы удаляете элементы из микрофонов, не могли бы вы показать нам?

2. Я не уверен, что вы имеете в виду, помимо предоставленного кода. microphones это изменяемый список моего Microphone объекта, который наследуется от родительского фрагмента. Я удаляю соответствующую запись с помощью прослушивателя onClick для ImageButton в своей строке и просто удаляю запись из списка в onBindViewHolder. Какая другая информация была бы полезна?