recherche

Maison  >  Questions et réponses  >  le corps du texte

android - getLayoutPosition与getAdapterPosition

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

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

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

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

高洛峰高洛峰2887 Il y a quelques jours714

répondre à tous(1)je répondrai

  • 高洛峰

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

    Lorsque le contenu de l'adaptateur change (et que vous appelez notify*) RecyclerView demande une nouvelle mise en page À partir de ce moment, jusqu'à ce que le système de mise en page décide de calculer une nouvelle mise en page (<16 ms), le système de mise en page décide de calculer une nouvelle mise en page (<16 ms). La position de la mise en page et la position de l'adaptateur peuvent ne pas correspondre car la mise en page n'a pas encore reflété les modifications de l'adaptateur.

    La réponse est très claire. La différence spécifique est qu'il y aura un décalage horaire entre les positions de l'adaptateur et la mise en page (<16 ms). Si vous modifiez les données de l'adaptateur puis actualisez la vue, ce sera le cas. il faut un certain temps pour que la mise en page mette à jour la vue. Pendant cette période, les positions renvoyées par ces deux méthodes seront différentes.

    De plus, la réponse mentionne également que la position dans l'adaptateur ne peut pas être obtenue immédiatement après notifyDataSetChanged, et ne peut être obtenue qu'une fois la mise en page terminée.

    En ce qui concerne la position de la mise en page, après notifyItemInserted, la mise en page ne peut pas obtenir la nouvelle position immédiatement car la mise en page n'a pas encore été mise à jour (il faut <16 ms pour actualiser la vue), elle ne peut donc obtenir que l'ancienne, mais la Adaptateur Vous pouvez obtenir la dernière position immédiatement en cliquant sur la position dans la position.

    À propos de ça

    répondre
    0
  • Annulerrépondre