调用 notifyDataSetChanged 后,FragmentPagerAdapter 不会从 0 开始位置
FragmentPagerAdapter doesn't start position from 0 after call notifyDataSetChanged
我有一个简单的 FragmentPagerAdapter class
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 扩展而来的简单 class。
然后我将 SectionsPagerAdapter 的实例设置为我的 ViewPager。
问题在这里:
起初我在视图分页器上有一个页面(数据大小为 1),当我获得更多数据时,我调用 SectionsPagerAdapter 实例 notifyDataSetChanged,但是在 getItem(int position) 方法中而不是从 0 开始的位置开始来自 1!!!
我该怎么办?我想在获得更多数据后重新创建我的视图寻呼机
提前致谢
您需要重新设置适配器以重置位置,notifyDataSetChanged 用于通知适配器有数据更改,因此它只重新绑定数据。
或者您可以使用此代码将视图寻呼机移动到您想要的位置
viewPager.setCurrentItem(0);
notifyDataSetChanged()
将仅通知任何已注册的观察者数据集已更改,无论触摸 viewPager 位置如何。
There are two different classes of data change events, item changes
and structural changes. Item changes are when a single item has its
data updated but no positional changes have occurred. Structural
changes are when items are inserted, removed or moved within the data
set.
您必须手动将 viewPager 的位置设置为开始页面(位置 0)在 notifyDataSetChanged().
之后
adapter.notifyDataSetChanged();
viewPager.setCurrentItem(0);
我有一个简单的 FragmentPagerAdapter class
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 扩展而来的简单 class。 然后我将 SectionsPagerAdapter 的实例设置为我的 ViewPager。
问题在这里:
起初我在视图分页器上有一个页面(数据大小为 1),当我获得更多数据时,我调用 SectionsPagerAdapter 实例 notifyDataSetChanged,但是在 getItem(int position) 方法中而不是从 0 开始的位置开始来自 1!!!
我该怎么办?我想在获得更多数据后重新创建我的视图寻呼机 提前致谢
您需要重新设置适配器以重置位置,notifyDataSetChanged 用于通知适配器有数据更改,因此它只重新绑定数据。
或者您可以使用此代码将视图寻呼机移动到您想要的位置
viewPager.setCurrentItem(0);
notifyDataSetChanged()
将仅通知任何已注册的观察者数据集已更改,无论触摸 viewPager 位置如何。
There are two different classes of data change events, item changes and structural changes. Item changes are when a single item has its data updated but no positional changes have occurred. Structural changes are when items are inserted, removed or moved within the data set.
您必须手动将 viewPager 的位置设置为开始页面(位置 0)在 notifyDataSetChanged().
之后adapter.notifyDataSetChanged();
viewPager.setCurrentItem(0);