使用ViewPager的碎片PagerAdapter不更新视图

时间:2017-02-10 15:23:03

标签: android android-fragments android-viewpager

我已经有一个可以运行的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);

1 个答案:

答案 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.*/