찾다

 >  Q&A  >  본문

android - getLayoutPosition与getAdapterPosition

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

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

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

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

高洛峰高洛峰2772일 전673

모든 응답(1)나는 대답할 것이다

  • 高洛峰

    高洛峰2017-04-17 17:47:11

    어댑터 내용이 변경되면(그리고 알림 호출*) RecyclerView는 그 순간부터 레이아웃 시스템이 새 레이아웃을 계산하기로 결정할 때까지(<16 ms) 레이아웃에 아직 어댑터 변경 사항이 반영되지 않았기 때문에 레이아웃 위치와 어댑터 위치가 일치하지 않을 수 있습니다.

    구체적인 차이점은 어댑터의 위치와 레이아웃 사이에 시간 차이(<16ms)가 있다는 것입니다. 레이아웃이 뷰를 업데이트하는 데 시간이 좀 걸립니다. 이 기간 동안 이 두 가지 방법으로 반환되는 위치는 달라집니다.

    또한, 어댑터에서의 위치는 notifyDataSetChanged 직후에 얻을 수 없고, 레이아웃이 완료된 후에만 얻을 수 있다고 답변에서도 언급되었습니다.

    레이아웃의 위치는 notifyItemInserted 이후에는 레이아웃이 아직 업데이트되지 않았기 때문에 새 위치를 즉시 얻을 수 없으므로(뷰를 새로 고치는 데 <16ms 소요) 이전 위치만 얻을 수 있지만 어댑터 해당 위치에서 해당 위치를 클릭하면 최신 위치를 바로 얻을 수 있습니다.

    이에 대해

    회신하다
    0
  • 취소회신하다