小编Jin*_*yek的帖子

当数据更改时,片段内的 RecyclerView 适配器不会更新

我有一个包含 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并且 …

android-fragments kotlin android-recyclerview

6
推荐指数
1
解决办法
60
查看次数