看了stackoverflow RecyclerView.ViewHolder - getLayoutPosition vs getAdapterPosition上的解释
然后又看了 它俩的源码的注释
还是没有分清它俩的具体区别
有没有人具体的说明一下??!
看了stackoverflow RecyclerView.ViewHolder - getLayoutPosition vs getAdapterPosition上的解释
然后又看了 它俩的源码的注释
还是没有分清它俩的具体区别
有没有人具体的说明一下??!
2 回答1.3k 阅读✓ 已解决
2 回答2.7k 阅读
2 回答1.8k 阅读
1 回答2.1k 阅读
1 回答1.2k 阅读
1 回答1.3k 阅读
1 回答603 阅读✓ 已解决
那个答案说得挺清楚的, 具体区别就是adapter和layout的位置会有时间差(<16ms), 如果你改变了Adapter的数据然后刷新视图, layout需要过一段时间才会更新视图, 在这段时间里面, 这两个方法返回的position会不一样.
另外答案还提到, 在
notifyDataSetChanged
之后并不能马上获取Adapter中的position, 要等布局结束之后才能获取到.而对于Layout的position, 在
notifyItemInserted
之后, Layout不能马上获取到新的position, 因为布局还没更新(需要<16ms的时间刷新视图), 所以只能获取到旧的, 但是Adapter中的position就可以马上获取到最新的position.大致这样