In ViewModels passed the LifecycleOwner instead of the Activity

This commit is contained in:
CappielloAntonio 2022-01-02 16:19:16 +01:00
parent d2ad0188b7
commit 134d4e33e5
7 changed files with 53 additions and 45 deletions

View file

@ -28,7 +28,6 @@ import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.viewmodel.PlaylistCatalogueViewModel;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class PlaylistCatalogueFragment extends Fragment {
@ -111,32 +110,35 @@ public class PlaylistCatalogueFragment extends Fragment {
playlistCatalogueAdapter = new PlaylistCatalogueAdapter(activity, requireContext(), playlistCatalogueViewModel.getType().equals(Playlist.DOWNLOADED));
bind.playlistCatalogueRecyclerView.setAdapter(playlistCatalogueAdapter);
playlistCatalogueViewModel.getPlaylistList(requireActivity()).observe(requireActivity(), playlists -> {
playlistCatalogueViewModel.getPinnedPlaylistList(requireActivity()).observe(requireActivity(), pinnedPlaylists -> {
List<Playlist> sortedList = new ArrayList<>();
List<Playlist> unsortedList = new ArrayList<>(playlists);
List<Playlist> pinnedPlaylistsVerified = new ArrayList<>();
List<Playlist> pinnedPlaylistsNotFound = new ArrayList<>();
if(getActivity() != null) {
playlistCatalogueViewModel.getPlaylistList(requireActivity()).observe(requireActivity(), playlists ->
playlistCatalogueViewModel.getPinnedPlaylistList(requireActivity()).observe(requireActivity(),
pinnedPlaylists -> {
List<Playlist> sortedList = new ArrayList<>();
List<Playlist> unsortedList = new ArrayList<>(playlists);
if(unsortedList.size() > 0) {
for(Playlist pinnedPlaylist: pinnedPlaylists) {
if(playlists.contains(pinnedPlaylist)) {
pinnedPlaylistsVerified.add(pinnedPlaylist);
} else {
pinnedPlaylistsNotFound.add(pinnedPlaylist);
}
}
List<Playlist> pinnedPlaylistsVerified = new ArrayList<>();
List<Playlist> pinnedPlaylistsNotFound = new ArrayList<>();
unsortedList.removeAll(pinnedPlaylistsVerified);
sortedList.addAll(pinnedPlaylistsVerified);
sortedList.addAll(unsortedList);
}
if (unsortedList.size() > 0) {
for (Playlist pinnedPlaylist : pinnedPlaylists) {
if (playlists.contains(pinnedPlaylist)) {
pinnedPlaylistsVerified.add(pinnedPlaylist);
} else {
pinnedPlaylistsNotFound.add(pinnedPlaylist);
}
}
playlistCatalogueAdapter.setItems(sortedList);
playlistCatalogueViewModel.unpinPlaylist(pinnedPlaylistsNotFound);
});
});
unsortedList.removeAll(pinnedPlaylistsVerified);
sortedList.addAll(pinnedPlaylistsVerified);
sortedList.addAll(unsortedList);
}
playlistCatalogueAdapter.setItems(sortedList);
playlistCatalogueViewModel.unpinPlaylist(pinnedPlaylistsNotFound);
}));
}
bind.playlistCatalogueRecyclerView.setOnTouchListener((v, event) -> {
hideKeyboard(v);