调用notifyDataSetChanged

时间:2017-04-05 07:14:56

标签: android android-fragments android-viewpager fragmentpageradapter

我有一个简单的FragmentPagerAdapter类

    public class SectionsPagerAdapter extends FragmentPagerAdapter {

    public SectionsPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        PagerAdapter fragment;
                fragment = new PagerAdapter(data.get(position));

        return fragment;
    }


    @Override
    public int getCount() {
    return data.size();
    }

    @Override
    public CharSequence getPageTitle(int position) {
        if (position >= pageCount || position < 0)
            return null;
        return "Profile " + position;
    }

}

PagerAdapter是一个从Fragment扩展而来的简单类。 然后我将SectionsPagerAdapter的一个实例设置为我的ViewPager。

问题在这里:

起初我在视图分页器上有一个页面(数据大小为1),当我得到更多数据时,我调用SectionsPagerAdapter实例notifyDataSetChanged,但是在getItem(int position)方法而不是位置start form 0,它从1开始!!!

我该怎么办?在获得更多数据后,我想创建我的视图寻呼机 提前致谢

2 个答案:

答案 0 :(得分:2)

您需要再次设置适配器以重置位置,notifyDataSetChanged用于通知适配器存在数据更改,因此仅重新绑定数据。

或者您可以使用此代码移动您想要的视图寻呼机

some_module: {{item}}.split('@')[1] with_items: - git@someversionxxx - gradle@someversionxxx

答案 1 :(得分:1)

notifyDataSetChanged()只会通知任何已注册的观察者,无论触及viewPager位置,数据集都已更改。

  

有两种不同类别的数据更改事件,即项目更改   和结构变化。项目更改是指单个项目具有的项目   数据已更新,但未发生任何位置更改。结构   更改是在数据中插入,删除或移动项目的时间   集。

您必须在notifyDataSetChanged()之后手动设置viewPager的位置以手动开始页面(位置0)。

adapter.notifyDataSetChanged();
viewPager.setCurrentItem(0);