看了stackoverflow RecyclerView.ViewHolder - getLayoutPosition vs getAdapterPosition上的解释
然后又看了 它俩的源码的注释
还是没有分清它俩的具体区别
有没有人具体的说明一下??!
高洛峰2017-04-17 17:47:11
어댑터 내용이 변경되면(그리고 알림 호출*) RecyclerView는 그 순간부터 레이아웃 시스템이 새 레이아웃을 계산하기로 결정할 때까지(<16 ms) 레이아웃에 아직 어댑터 변경 사항이 반영되지 않았기 때문에 레이아웃 위치와 어댑터 위치가 일치하지 않을 수 있습니다.
구체적인 차이점은 어댑터의 위치와 레이아웃 사이에 시간 차이(<16ms)가 있다는 것입니다. 레이아웃이 뷰를 업데이트하는 데 시간이 좀 걸립니다. 이 기간 동안 이 두 가지 방법으로 반환되는 위치는 달라집니다.
또한, 어댑터에서의 위치는 notifyDataSetChanged
직후에 얻을 수 없고, 레이아웃이 완료된 후에만 얻을 수 있다고 답변에서도 언급되었습니다.
레이아웃의 위치는 notifyItemInserted
이후에는 레이아웃이 아직 업데이트되지 않았기 때문에 새 위치를 즉시 얻을 수 없으므로(뷰를 새로 고치는 데 <16ms 소요) 이전 위치만 얻을 수 있지만 어댑터 해당 위치에서 해당 위치를 클릭하면 최신 위치를 바로 얻을 수 있습니다.
이에 대해