如何在其他片段中更改数据时刷新recyclerview适配器?

问题描述 投票:0回答:3

第一个片段

private void initRecyclerView() {
        Main.musicList = Main.songs.songs;
        if ((Main.musicList != null) && (!Main.musicList.isEmpty())) {
            // Connects the song list to an adapter
            // (Creates several Layouts from the song list)
            allSongsAdapter = new AllSongsAdapter(getActivity(), Main.musicList);

            final LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());

            recyclerViewSongs.setLayoutManager(linearLayoutManager);
            recyclerViewSongs.setHasFixedSize(true);
            recyclerViewSongs.setAdapter(allSongsAdapter);
   } 
}

在第一个片段中,我有一个recyclerview,它显示一个包含设备上所有歌曲的列表,我可以选择删除一首歌曲,通过重新扫描设备上的所有歌曲来改变我的arraylist Main.musicList中的数据。

所以我的应用程序中的所有其他arraylists仍然引用了已删除的歌曲。

那么当我删除第一个片段中的项目时,如何在其他片段中的所有recyclerview适配器上调用notifySetDataChanged?

java android android-recyclerview recycler-adapter
3个回答
0
投票

简单的方法是使用BroadcastReceiver。试试this的答案


0
投票
  1. 在包含这些片段的Activity中使用ViewModel。
  2. 将您的歌曲列表包装在LiveData对象中。所有碎片都可以根据它们的生命周期观察到这一点(当片段处于​​OnResumed状态时,当列表发生变化时会自动通知)
  3. 在相关片段中开始观察LiveData并在更改时更新适配器。

相关主题:https://developer.android.com/topic/libraries/architecture/livedata https://medium.com/androiddevelopers/viewmodels-and-livedata-patterns-antipatterns-21efaef74a54希望我能帮到你。


0
投票

您可以使用EventBus触发方法,通过该方法将通知reyclcer视图适配器

© www.soinside.com 2019 - 2024. All rights reserved.