I'm trying to use ViewHolder.getOldPosition() to animate the removal of RecyclerView items with ItemAnimators.
class MyItemAnimator: SimpleItemAnimator() {
private val pendingRemovals = ArrayList<RecyclerView.ViewHolder>()
override fun animateRemove(holder: RecyclerView.ViewHolder): Boolean {
pendingRemovals.add(holder)
val dbg = holder.oldPosition // always -1
}
override fun runPendingAnimations(){
pendingRemovals.forEach {
it.itemView.animate().apply {
translationX(it.itemView.rootView.width.toFloat())
alpha(0F)
startDelay = it.oldPosition * 50 // always -1 * 50
}.start()
}
}
}
However, getOldPosition() always return -1, even though the ViewHolder is obviously on the screen. How do you make getOldPosition() return the correct value?