我有一个包含 2 个选项卡的活动,每个选项卡里面都有一个片段ViewPager。每个片段都有一个RecyclerView. 当我导航到另一个活动时,应该更新片段内的数据。尽管数据正确发送到片段,但仍显示原始数据。我尝试notifyDataSetChanged()在片段内使用方法,但没有用。我还尝试从活动中调用它,例如:
if (!pickedItemsList.isNullOrEmpty() && notScannedItemsFragment != null && notScannedItemsFragment.isAdded)
{
notScannedItemsFragment.notScannedItemsAdapter.notifyDataSetChanged()
}
Run Code Online (Sandbox Code Playgroud)
然而,它也没有奏效。
这就是我启动片段的方式:
override fun initFragments(savedInstanceState: Bundle?, pickedItemsList: ArrayList<OrderDetail>, remainigItemsList: ArrayList<OrderDetail>) {
val listener: ItemsInteractionListener = object : ItemsInteractionListener {
override fun onSwipeToRefresh() {
presenter.onSwipeToRefresh()
}
}
if (!pickedItemsList.isNullOrEmpty() && notScannedItemsFragment != null && notScannedItemsFragment.isAdded) {
notScannedItemsFragment.notScannedItemsAdapter.notifyDataSetChanged()
scannedItemsFragment = ScannedItemsFragment().newInstance(remainingItemsList)
notScannedItemsFragment = NotScannedItemsFragment().newInstance(pickedItemsList)!!
} else {
scannedItemsFragment = ScannedItemsFragment().newInstance(arrayListOf())
notScannedItemsFragment = NotScannedItemsFragment().newInstance(allItemsList)!!
}
scannedItemsFragment.setListener(listener)
notScannedItemsFragment.setListener(listener)
}
Run Code Online (Sandbox Code Playgroud)
allItemList是原始列表,pickedItemsList并且 …