看了stackoverflow RecyclerView.ViewHolder - getLayoutPosition vs getAdapterPosition上的解释
然后又看了 它俩的源码的注释
还是没有分清它俩的具体区别
有没有人具体的说明一下??!
高洛峰2017-04-17 17:47:11
When adapter contents change (and you call notify*) RecyclerView requests a new layout. From that moment, until layout system decides to calculate a new layout (<16 msil layout position, the calculate a new layout (<16 ms ), mlaycater m layout has not reflected adapter changes yet.
那個答案說得挺清楚的, 具體區別就是adapter和layout的位置會有時間差(<16ms), 如果你改變了Adapter的數據然後刷新視圖, layout需要過一段時間才會更新視圖, 在這段時間裡面, 這兩個方法回傳的position會不一樣.
另外答案還提到, 在notifyDataSetChanged
之後並不能馬上獲取Adapter中的position, 要等佈局結束之後才能獲取到.notifyDataSetChanged
之后并不能马上获取Adapter中的position, 要等布局结束之后才能获取到.
而对于Layout的position, 在notifyItemInserted
notifyItemInserted
之後, Layout不能馬上獲取到新的position, 因為佈局還沒更新(需要<16ms的時間刷新視圖), 所以只能獲取到舊的,但是Adapter中的position就可以馬上取得到最新的position.大致這樣🎜