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

时间:2019-02-23 18:20:09

标签: java android android-recyclerview recycler-adapter

第一个片段

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,该视图显示一个列表,其中包含在设备上找到的所有歌曲,并且我可以选择删除一首歌曲,该歌曲通过重新扫描来更改我的阵列列表 Main.musicList 中的数据设备上的所有歌曲。

所以我应用中的所有其他数组列表仍然引用了该歌曲。

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

3 个答案:

答案 0 :(得分:0)

最简单的方法是使用constraint(equalTo:)。尝试this答案

答案 1 :(得分: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 希望我能为您服务。

答案 2 :(得分:0)

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