你的ViewPager八成用错了

本文分析了ViewPager的常见错误用法,探讨了正确的使用方式,包括FragmentPagerAdapter的源码解析,如何优雅地在滑动到当前Fragment时加载数据,以及如何避免滥用getItemPosition()。同时,讲解了如何主动获取ViewPager中的Fragment实例,纠正了常见误区。
摘要由CSDN通过智能技术生成

前言

今天的文章内容是关于ViewPager的,很多同学可能会吐槽:怎么还写这种“低级”的内容!为什么?因为绝大多数的同学都用错了,当然这主要的原因是搜索引擎推出来的文章大多都是错的!

正文

一、错误用法

不知道有多少同学是这样用ViewPager的?

class TestViewPagerActivity : BaseActivity() {
    private lateinit var adapter: ViewPagerAdapter
    private val fragments = mutableListOf<Fragment>().apply {
        add(TestFragment1.newInstance("页面-1"))
        add(TestFragment2.newInstance("页面-2"))
        add(TestFragment3.newInstance("页面-3"))
	}

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_test_view_pager)
        adapter = ViewPagerAdapter(fragmentData, supportFragmentManager)
        vp.adapter = adapter
    }

    inner class ViewPagerAdapter(val fragments: List<Fragment>, fm: FragmentManager) : FragmentPagerAdapter(fm) {
        override fun getItem(position: Int): Fragment {
            return fragments[position]
        }

        override fun getCount(): Int {
            return fragments.size
        }
    }
}

如果看到这的同学觉得这个用法没什么问题。那么毫无疑问这篇文章你必须要读一读,因为上述的用法完全曲解的Fragment在ViewPager中的应用。

二、正确用法

我猜有同学可能有疑问了,那正确用法是什么样呢?

当然有同学反驳:凭什么你说你的写法是对的呢?这还用问吗?还不是因为我大!!!....Google的文档了:ViewPager

class TestViewPagerActivity : BaseActivity() {
    private lateinit var adapter: ViewPagerAdapter

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_test_view_pager)
        adapter = ViewPagerAdapter(fragmentData, supportFragmentManager)
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值