我遇到了ViewPager的问题,在应用启动时,尽管刷新了相关联的PagerAdapter基础列表,但寻呼机仍然拥有陈旧信息的视图。该刷新的最后一步是调用适配器的notifyDataSetChanged方法,但片段最终不会被刷新,至少最初是这样。刷新寻呼机时,它们会刷新,导致框架调用适配器的getItem方法。 getItem的Myi实现实例化一个新片段(使用来自基础项目列表的当前数据)。
我注意到的一件事是,在响应notifyDataSetChanged调用时,永远不会调用适配器的getItemPosition方法。 SO上的几个帖子表明返回POSITION_NONE是指示应该重新加载片段的方式。但是从不调用getItemPosition,因此没有效果。
一个谜团是旧碎片从何而来。我认为系统有一些神奇地重新实例化的方法,但是我很难理解整个片段生命周期。无论如何,这不是我想要的,至少没有告诉适配器(或者可能是寻呼机本身?)“请刷新一切”。我以为在打电话 notifyDataSetChanged是这样做的方法,但它无法正常工作。就好像PagerAdapter无法通知寻呼机数据现在不同,并且它应该要求刷新。
我想,问题是:如果寻呼机的数据发生了变化,你如何通知它数据是陈旧的,它应该请求一个新的片段(或者可能更新现有的片段)?