搜尋

首頁  >  問答  >  主體

android - getLayoutPosition与getAdapterPosition

看了stackoverflow RecyclerView.ViewHolder - getLayoutPosition vs getAdapterPosition上的解释

然后又看了 它俩的源码的注释

还是没有分清它俩的具体区别

有没有人具体的说明一下??!

高洛峰高洛峰2772 天前672

全部回覆(1)我來回復

  • 高洛峰

    高洛峰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

    而對於Layout的position, 在notifyItemInserted之後, Layout不能馬上獲取到新的position, 因為佈局還沒更新(需要<16ms的時間刷新視圖), 所以只能獲取到舊的,但是Adapter中的position就可以馬上取得到最新的position.

    大致這樣🎜

    回覆
    0
  • 取消回覆