Android 什么时候应该考虑一个项目的变化?什么位置?
Android PagerAdapter类中getItemPosition方法的文档说明它是: 当宿主视图试图确定项目的位置是否已更改时调用 应该调用此方法以指示该适配器的项在项组中的位置是否已更改Android 什么时候应该考虑一个项目的变化?什么位置?,android,android-viewpager,Android,Android Viewpager,Android PagerAdapter类中getItemPosition方法的文档说明它是: 当宿主视图试图确定项目的位置是否已更改时调用 应该调用此方法以指示该适配器的项在项组中的位置是否已更改 但是,当重写方法应该考虑要改变的位置时,它从来没有声明过。这是否意味着该位置与上次调用项目getItemPosition时的位置不同?这是否意味着该项的位置与上次调用notifyDataSetChanged时的位置不同?或者这是否意味着项目的位置与将项目添加到viewPager时不同?您可以在vie
<>但是,当重写方法应该考虑要改变的位置时,它从来没有声明过。这是否意味着该位置与上次调用项目getItemPosition时的位置不同?这是否意味着该项的位置与上次调用notifyDataSetChanged时的位置不同?或者这是否意味着项目的位置与将项目添加到viewPager时不同?您可以在viewPager.java中看到,
getItemPosition
仅在dataSetChanged
中调用。这意味着,如果项目的位置与上次调用的dataSetChanged
不同,则项目的位置会发生更改
我不会太担心“改变”的含义;有两种情况:
getItemPosition
返回position_UNCHANGED
李>
position\u UNCHANGED
或实际位置没有差异。因此,为了保持实现的简单性,您可以返回位置(或position\u NONE
),而忽略position\u未更改的情况
默认情况下,ViewPager中项目的位置被视为固定的;这就是为什么默认情况下
getItemPosition()
会返回未更改的POSITION\u
。移动项目时,ViewPager必须知道在何处删除项目(项目的旧位置)以及在何处添加项目。这就是getItemPosition()
的用途。它允许您告诉ViewPager将哪个项目放在哪里,即使页面已实例化
getItemPosition()
仅当您在PagerAdapter上调用notifyDataSetChanged()
时才会被调用。按设计,这意味着“更改”意味着“从ViewPager上次填充其页面时更改”,因为notifyDataSetChanged()
会导致ViewPager在必要时重新绘制其子项。换言之,“变更”具有您提到的任一含义;以最近发生的为准
我认为getItemPosition
如果没有示例,理解起来相当困难;我想这会澄清一些事情