当适配器更改片段内的列表视图时,我一直在用片段撞墙并触发视图刷新。现在我有:
- 持有 FragmentManager 的主要活动
- Activity 通过 FragmentPagerAdapter.getItem 方法根据位置创建片段
- 随后的活动或按钮按下会导致其中一个片段背后的数据发生变化
- Activity调用自定义Fragment类的refresh方法触发数据刷新
- refresh 方法获取片段中的 ListView 对象
- 这是发生 Null 异常的地方
刷新方法如下:
public void refresh() {
groups = new Select()
.from(Group.class)
.execute();
listView = (ListView)getActivity().findViewById(R.id.overview_container);
// Never get here
groupAdapter.clear();
groupAdapter.setItems(groups);
listView.invalidateViews();
}
设置是
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_overview, container, false);
groups = new Select()
.from(Group.class)
.execute();
listView = (ListView)view.findViewById(R.id.overview_container);
listView.setAdapter(new GroupAdapter(view.getContext(), R.layout.time_view, groups));
return view;
}
我在这里缺少一些基本的东西吗?这里有像听众这样更简单的模式可以解决这个问题吗?我似乎无法让视图返回除 null 之外的任何内容——即使我存储它。