検索

ホームページ  >  に質問  >  本文

android - getLayoutPosition与getAdapterPosition

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

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

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

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

高洛峰高洛峰2772日前668

全員に返信(1)返信します

  • 高洛峰

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

    アダプターの内容が変更されると (そして、notify* を呼び出します)、RecyclerView は新しいレイアウトを要求します。その瞬間から、レイアウト システムが新しいレイアウトの計算を決定するまで (<16 ミリ秒)、レイアウトにアダプターの変更がまだ反映されていないため、レイアウトの位置とアダプターの位置が一致しない可能性があります。

    答えは非常に明白で、具体的な違いは、アダプターのデータを変更してからビューを更新すると、アダプターとレイアウトの位置に時間差が生じることです (<16ms)。レイアウトがビューを更新するまでには時間がかかります。この期間中、これら 2 つのメソッドによって返される位置は異なります。

    さらに、回答には、アダプター内の位置は notifyDataSetChanged の直後には取得できず、レイアウトが完了した後にのみ取得できることも記載されています。

    レイアウトの位置については、notifyItemInserted の後、レイアウトがまだ更新されていないため、レイアウトは新しい位置をすぐに取得できません (ビューを更新するのに <16ms かかります)。したがって、古い位置しか取得できませんが、アダプター 位置内の位置をクリックすると、最新の位置をすぐに取得できます。

    これについて

    返事
    0
  • キャンセル返事