ViewPager动态添加删除及刷新页面,一篇文章帮你解答

本文详细解析ViewPager如何通过PagerAdapter的notifyDataSetChanged()方法实现数据集的刷新,并强调需要实现getItemPosition(Object)方法来确保正确操作。示例代码演示了如何覆写getItemPosition()以支持动态变化。
摘要由CSDN通过智能技术生成

/**

  • PagerAdapter supports data set changes. Data set changes must occur on the

  • main thread and must end with a call to {@link #notifyDataSetChanged()} similar

  • to AdapterView adapters derived from {@link android.widget.BaseAdapter}. A data

  • set change may involve pages being added, removed, or changing position. The

  • ViewPager will keep the current page active provided the adapter implements

  • the method {@link #getItemPosition(Object)}.

*/

public abstract class PagerAdapter {

//…

public static final int POSITION_UNCHANGED = -1;

public static final int POSITION_NONE = -2;

//…

}

看PagerAdapter的最后一段,大概翻译一下,意思是:

PagerAdapter支持数据集改变。数据集的改变必须发生在主线程,并且以调用notifyDataSetChanged()方法结束,类似于AdapterView的适配器(继承自android.widget

动态添加 Fragment 到 ViewPager 中,需要使用 FragmentPagerAdapter 或 FragmentStatePagerAdapter。以下是添加 Fragment 的步骤: 1. 创建 FragmentPagerAdapter 或 FragmentStatePagerAdapter 的子类: ``` public class MyPagerAdapter extends FragmentPagerAdapter { private List<Fragment> mFragmentList = new ArrayList<>(); public MyPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return mFragmentList.get(position); } @Override public int getCount() { return mFragmentList.size(); } public void addFragment(Fragment fragment) { mFragmentList.add(fragment); notifyDataSetChanged(); } } ``` 在这个子类中,我们需要重写 getItem() 方法,返回指定位置的 Fragment 对象;重写 getCount() 方法,返回 Fragment 的数量;还需要添加一个 addFragment() 方法,用于添加 Fragment。 2. 创建 ViewPager 对象,并设置 Adapter: ``` ViewPager viewPager = findViewById(R.id.viewpager); MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager()); viewPager.setAdapter(adapter); ``` 3. 创建 Fragment 对象: ``` MyFragment fragment = new MyFragment(); ``` 4. 添加 Fragment 到 Adapter: ``` adapter.addFragment(fragment); ``` 5. 刷新 Adapter: ``` adapter.notifyDataSetChanged(); ``` 这样就添加了一个 Fragment 到 ViewPager 中。如果需要替换 ViewPager 中的 Fragment,可以使用 setItem() 方法,方法参数是要替换的 Fragment 对象和位置。如果需要从 ViewPager 中移除 Fragment,可以使用 removeItem() 方法,方法参数是要移除的位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值