删除视图寻呼机项目而不重新加载其他项目



我使用了FragmentPagerAdapter。当我从itemList和notifyDataSetChanged中删除项时。碎片重新加载。在这种情况下,我正在丢失其他片段中的数据。如何在不丢失其他片段数据的情况下实现这一点

public class BasicViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragments;
public BasicViewPagerAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
this.mFragments = fragments;
}
@Override
public Fragment getItem(int i) {
return mFragments.get(i);
}

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

public void remove(int cashBoxPosition) {
mFragments.remove(cashBoxPosition);
notifyDataSetChanged();
}

}

fragmentList.remove(event.getCashBoxPosition(((;mAdapterViewPager.remove(event.getCashBoxPosition(((;

在您想要保存数据的片段中通过onSaveInstanceState/onViewStateRestored保存和恢复状态,这是的唯一方法

使用viewpager2 最终解决

public class BasicViewPager2Adapter extends FragmentStateAdapter {
private List<Fragment> mFragments;
public BasicViewPager2Adapter(FragmentActivity fa, List<Fragment> fragments) {
super(fa);
this.mFragments = fragments;
}
@NonNull
@Override
public Fragment createFragment(int i) {
return mFragments.get(i);
}
@Override
public int getItemCount() {
return mFragments.size();
}
@Override
public long getItemId(int position) {
return mFragments.get(position).hashCode();
}
@Override
public boolean containsItem(long itemId) {
return super.containsItem(itemId);
}
public void remove(int cashBoxPosition) {
mFragments.remove(cashBoxPosition);
notifyDataSetChanged();
}

}

最新更新