recycleView holder.getAdapterPosition() 经常返回-1,为什么
时间: 2024-06-01 07:08:02 浏览: 7
RecyclerView的AdapterPosition和ViewHolder的AdapterPosition有时会返回-1,这是因为RecyclerView在处理布局时,会异步更新视图,因此ViewHolder的AdapterPosition可能会在数据更新之前被访问。这种情况下,RecyclerView会将AdapterPosition设置为-1,以避免出现异常情况。如果ViewHolder的AdapterPosition返回-1,你可以通过调用getBindingAdapterPosition()方法或getAbsoluteAdapterPosition()方法来获取RecyclerView的最新AdapterPosition。
getBindingAdapterPosition()方法是在 RecyclerView.Adapter 中定义的,它可以返回ViewHolder的最新AdapterPosition,即使ViewHolder的数据已经被更新,它也能返回正确的位置。getAbsoluteAdapterPosition()方法是在RecyclerView.ViewHolder中定义的,它可以返回ViewHolder的绝对AdapterPosition,即使ViewHolder还没有绑定到RecyclerView中,它也能返回正确的位置。
在使用RecyclerView时,如果需要访问ViewHolder的AdapterPosition,请始终使用getBindingAdapterPosition()或getAbsoluteAdapterPosition()方法,以确保返回正确的位置。