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