【发布时间】:2021-03-06 21:43:58
【问题描述】:
我有一个带有 4 个标签或片段的 FragmentPagerAdapter (tabFragmentAdapter)。
每个片段都有一个RecyclerView 和adapter。
Ever holder 是一个带有移除按钮的卡片列表。
当我按下删除按钮时,卡片会从当前片段中删除:
adapter?.notifyDataSetChanged()
但问题是我希望在每个标签中删除卡片。但是当我向右滑动时,它仍在第二个标签中,但不在第三个和第四个标签中。
当我覆盖getItemPosition 并返回POSITION_NONE:
override fun getItemPosition(fragment: Any): Int {
// POSITION NONE, so that it reloads every time.
return POSITION_NONE
}
我有同样的问题,我看到屏幕有一点明显的拉扯。
当我从第四个位置滑回第一个位置时,第二个选项卡会更新并正确显示。
一种解决方案是调用:
tabFragmentAdapter?.notifyDataSetChanged()
但这会使列表短暂消失并再次显示。这不是一个很好的效果。
当我添加addOnTabSelectedListener时,App挂了。
val tabs: TabLayout = findViewById(R.id.tabs)
tabs.setupWithViewPager(viewPager)
tabs.addOnTabSelectedListener(object: TabLayout.OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab?) {
Log.d("","")
}
override fun onTabUnselected(tab: TabLayout.Tab?) {
Log.d("","")
tabFragmentAdapter?.notifyDataSetChanged()
}
override fun onTabReselected(tab: TabLayout.Tab?) {
Log.d("","")
}
})
我试过this所以回答
【问题讨论】:
标签: android kotlin fragmentstatepageradapter