android - 删除 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());
解决方案
最后使用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();
}
}
推荐阅读
- c# - 在谓词中动态选择参数的通用方法
- javascript - 识别元素中的随机背景梯度函数问题
- java - 等待多个线程完成
- python - python中的“具有多个元素的数组的真值不明确”
- python-3.x - Pandas 0.25.0 无法为 read_sql 创建游标 - 抛出错误
- javascript - 选择日期后模拟输入键(jquery)
- object-detection - 带有 TensorFlow Objection Detection API V2 的多通道输入
- linqpad - 以编程方式确定 linqpad 脚本是否针对生产连接字符串运行
- powershell - 如何创建签名自己的 exe/ps1 文件以与 applocker 一起使用
- visual-studio-2019 - “无法在设置文档缓冲区之前设置数据缓冲区。” 对于 IVsTextLines