我已经有一个可以运行的viewpager,但我有一个小bug。用户可以自己添加或删除页面。在这些页面中,我有一个edittext(事实上我有更多,但它是相同的情况),这是页面的名称。如果用户创建一个称为“第1页”的页面,删除它并在其后立即创建另一个页面(称为“第2页”),该片段将在第1页上显示数据“。为什么?我呼叫{{1创建和删除页面后,为什么不刷新片段?如果我离开活动并重新启动它,用户创建的“第2页”将显示“第2页”的数据。我还需要什么?要正确刷新片段吗?
我使用此库:link
我的onCreate方法
notifyDataSetChanged ();
我添加网页的方法
viewPager = (ViewPager) findViewById(R.id.viewpager);
viewPagerTab = (SmartTabLayout) findViewById(R.id.viewpagertab);
pages = new FragmentPagerItems(this);
int i = 0;
for (Points points : Pref.getList_points()) {
pages.add(FragmentPagerItem.of(points.getName(), FragmentConfigurationPoints.class, new Bundler().putInt("param1", i).get()));
i++;
}
adapter = new FragmentPagerItemAdapter(getSupportFragmentManager(), pages){
@Override
public int getItemPosition(Object object) {
return PagerAdapter.POSITION_NONE;
}
};
viewPager.setAdapter(adapter);
viewPagerTab.setViewPager(viewPager);
答案 0 :(得分:-1)
使用新数据重置适配器应强制加载新数据。
viewPager.setAdapter(adapter);
notifyDataSetChanged()无法正确执行您所需的操作。 此方法刷新适配器内的数据而非适配器本身。 查看reference
void notifyDataSetChanged ()
/*Notifies the attached observers that the underlying data has been changed and any View reflecting the data set should refresh itself.*/