gpt4 book ai didi

android - 在 ViewPager2 中是否有特殊的解决方案?

转载 作者:行者123 更新时间:2023-12-02 12:08:06 24 4
gpt4 key购买 nike

我的应用程序中有一些页面,每个页面都是具有自己 ViewModel 的 fgrament,并且它们都在 FrameLayout 中相互交换(我有特殊的 BottomNavigationView 来处理它们的交换)。

所以我想用 ViewPager2 替换 FrameLayout,但在这种情况下,我必须向 RecyclerView.Adapter 提供 View 而不是 fragment ,我的解决方案是将 fragment 包装到一些 View 中,例如 LinearLayout。

所以我的问题是:我认为这是最简单的解决方案是对的吗?有没有更好的解决方案?

最佳答案

ViewPager2 可以使用多种类型的适配器,而不仅仅是 RecyclerView.Adapter

如果您想使用带有状态的 Fragments,只需简单地制作一个扩展 FragmentStateAdapter 的自定义适配器并实现必要的方法。您的自定义适配器应如下所示:

class MyCustomPagerAdapter(
activity: FragmentActivity,
private val fragments: List<Fragment>) : FragmentStateAdapter(activity) {

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

override fun createFragment(position: Int): Fragment {
return fragments[position]
}
}

然后只需将 viewPager.adapter 设置为您的自定义适配器。每个 fragment 都有自己的状态,并且 FragmentStateAdapter 实现了 StatefulAdapter,因此您的 fragment 自动成为生命周期的一部分。

这里有一个例子: https://github.com/googlesamples/android-viewpager2

但是,如果您的 View 不需要自己的状态,最好只使用带有 RecyclerView.Adapter 的 View 。您将获得更好的性能。

关于android - 在 ViewPager2 中是否有特殊的解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56409083/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com