在Kotlin for Android中使用Pair时的性能
我一直在为ViewPager使用以下适配器类。它从java转换为Kotlin在Kotlin for Android中使用Pair时的性能,android,kotlin,tuples,Android,Kotlin,Tuples,我一直在为ViewPager使用以下适配器类。它从java转换为Kotlin class ViewPagerAdapter(manager: FragmentManager) : FragmentPagerAdapter(manager) { private val mFragmentList = ArrayList<Fragment>() private val mFragmentTitleList = ArrayList<String>()
class ViewPagerAdapter(manager: FragmentManager) : FragmentPagerAdapter(manager) {
private val mFragmentList = ArrayList<Fragment>()
private val mFragmentTitleList = ArrayList<String>()
override fun getItem(position: Int): Fragment {
return mFragmentList[position]
}
override fun getCount(): Int {
return mFragmentList.size
}
fun addFragment(fragment: Fragment, title: String) {
mFragmentList.add(fragment)
mFragmentTitleList.add(title)
}
override fun getPageTitle(position: Int): CharSequence? {
return mFragmentTitleList[position]
}
}
使用Pair显然可以提高可读性和可维护性,所以就这样做吧
但是,如果不存在通过索引getItemposition:Int访问元素所需的约束,我甚至会进一步使用映射
不要过多考虑微观优化。在这种情况下,它不会有明显的区别,因为您不会有+100个片段。您确定在使用适配器时存储片段是个好主意吗?也许您应该看看这个:我们需要定义哪些片段应该显示在viewpager中,上面的实现扩展FragmentPagerAdapter将促进这一点,并自行完成其他内部工作。我认为这是一个被广泛接受的实现,并且被大多数人使用。因为我们必须使用覆盖函数中使用的positionint值,所以我坚持使用Pair列表,并遵循您对微观优化的想法:
class ViewPagerAdapter(manager: FragmentManager) : FragmentPagerAdapter(manager) {
private val pairs = ArrayList<Pair<Fragment, String>>()
fun addFragment(fragment: Fragment, title: String) = pairs.add(Pair(fragment, title))
override fun getItem(position: Int): Fragment = pairs[position].first
override fun getCount(): Int = pairs.size
override fun getPageTitle(position: Int): CharSequence? = pairs[position].second
}
private val fragmentToTitleMap = HashMap<Fragment, String>()
fragmentToTitleMap[someFragment] = "someTitle"