Android学习笔记22

今天来绑定viewpager与tablayout
首先要建立一个viewpager的adapter

class MainPagerAdapter(fm: FragmentManager) : FragmentPagerAdapter(fm) {
    var fragmentList: MutableList<Fragment> = ArrayList()
    var fragmentTitle: MutableList<String> = ArrayList()
    override fun getItem(position: Int): Fragment {
        return fragmentList[position]
    }

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

    fun addFragment(fragment: Fragment, title: String) {
        fragmentList.add(fragment)
        fragmentTitle.add(title)
    }

    override fun getPageTitle(position: Int): CharSequence? {
        return fragmentTitle[position]
    }
}

接着在activity

class FragmentActivity : BaseActiivity(){
    private val fragmentViewModel by lazy {
        initViewModel(application , FragmentViewModel::class.java)
    }


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val binding = DataBindingUtil.setContentView<ActivityFragmentBinding>(this,R.layout.activity_fragment)
        binding.lifecycleOwner = this
        binding.viewmodel = fragmentViewModel
        val mainpagerAdapter = MainPagerAdapter(supportFragmentManager)
        mainpagerAdapter.addFragment(OneFragment(),"one")
        mainpagerAdapter.addFragment(TwoFragment(),"two")
        mainpagerAdapter.addFragment(ThreeFragment(),"three")
        binding.viewPager.adapter = mainpagerAdapter
        binding.viewPager.addOnPageChangeListener(TabLayout.TabLayoutOnPageChangeListener(binding.TabLayout))
        binding.TabLayout.addOnTabSelectedListener(object : OnTabSelectedListener {
            override fun onTabSelected(tab: TabLayout.Tab) {
                when (tab.position) {
                    0 -> binding.viewPager.currentItem = 0
                    1 -> binding.viewPager.currentItem = 1
                    3 -> binding.viewPager.currentItem = 2
                }
            }

            override fun onTabUnselected(tab: TabLayout.Tab) {}
            override fun onTabReselected(tab: TabLayout.Tab) {}
        })

    }
}

<<:  从零开始的8-bit迷宫探险【Level 23】长老,这个水晶值多少钱?

>>:  DAY16 签到按钮功能实现

Istio是什么?Istio如何编译

Istio 是当前最流行的服务网格实现 ,它是在 Kubernetes 的基础上开发的,它跟 Kub...

Day1 - 序言 - 成为Canvas Ninja ~ 理解2D渲染的精髓

SO Just Who The Hell Am I? 大家好! 首先先介绍一下我自己, 我是Mizo...

【DAY 5】主管签名好难追怎麽办? Power Automate - 核准

哈罗 ~ 大家好 ~ 欢迎回来 ~ 相信征战职场的大家,一定会有个苦恼的问题,那就是每次老板签公文都...

DAY 21 Big Data 5Vs – Variety(速度) Kinesis (1)

串流处理的应用场景近年来越来越常见,尤其是IOT产业的蓬勃发展,加上硬体技术的发展,越来越多的即时资...

Swift纯Code之旅 Day29. 「新增闹钟功能(2) - 如何使用Delegate传值」

前言 昨天我们已经将资料打包完成了,离完成闹钟功能只差一点点了, 只要把资料回传到首页,就可以实现新...