首页 > 解决方案 > 删除 viewpager 项目而不重新加载其他项目

问题描述

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

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());

标签: androidandroid-viewpager

解决方案


最后使用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();
}

}


推荐阅读