Как правильно анимировать viewHolder в RcView?
У меня есть viewHolder, кнопки в котором я пытаюсь анимировать с помощью ObjectAnimator Проблема заключается в том, что анимация почему то вызывается два раза подряд, а именно когда первый раз кликает на buyImageButton и в первый раз кликаешь на addImageButton, после этого все нормально, можно ли как то избавиться от этого поведения, что анимация проигралась только один раз
class ProductViewHolder(item: View, private val itemClickListener: ItemClickListener) :
RecyclerView.ViewHolder(item) {
private val binding = ProductCardItemBinding.bind(item)
private val context = binding.root.context
fun bind(product: ProductDto) = with(binding) {
addImageButton.setOnClickListener {
itemClickListener.addProductItem(layoutPosition)
}
deleteImageButton.setOnClickListener {
itemClickListener.removeProductItem(layoutPosition)
}
buyImageButton.setOnClickListener {
itemClickListener.createProduct(layoutPosition)
}
if (product.count > 0) {
countProductTextView.text = context.getString(R.string.count_products, product.count)
countProductTextView.show()
animator(deleteImageButton, 25, context)
animator(addImageButton, -75, context)
Log.d("ANIMATE", "CALL $layoutPosition")
buyImageButton.hide()
} else {
countProductTextView.hide()
buyImageButton.show()
addImageButton.hide()
deleteImageButton.hide()
}
}
private fun animator(view : View, dp : Int, context : Context){
view.show()
ObjectAnimator.ofFloat(view, View.TRANSLATION_X, context.pixelToDp(dp).toFloat()).apply {
duration = 300
interpolator = AnticipateOvershootInterpolator(1f)
}.start()
}
}
Ниже представлены методы,которые вызываются на клик и меняют количетсво элементов в Item вьюхолдера , а далее обновляет представление элемента с помощью notifyItemChanged
viewModel.incProduct(pos)
adapter.notifyItemChanged(pos)
}
override fun removeProductItem(pos: Int) {
viewModel.decProduct(pos)
adapter.notifyItemChanged(pos)
}
override fun createProduct(pos: Int) {
viewModel.createProduct(pos)
adapter.notifyItemChanged(pos)
}