From c6d08d6a3f7264af1d0d39da593526d93f875271 Mon Sep 17 00:00:00 2001 From: GallowsDove Date: Wed, 17 Jan 2024 19:21:16 +0100 Subject: [PATCH] fix: Fix issues with AlbumCatalogue --- .../ui/adapter/AlbumCatalogueAdapter.java | 11 +++++--- .../ui/fragment/AlbumCatalogueFragment.java | 8 +++++- .../viewmodel/AlbumCatalogueViewModel.java | 27 ++++++++++++++++--- 3 files changed, 38 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/AlbumCatalogueAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/AlbumCatalogueAdapter.java index 9fedd9d1..cc6514c3 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/AlbumCatalogueAdapter.java +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/AlbumCatalogueAdapter.java @@ -23,6 +23,8 @@ import java.util.List; public class AlbumCatalogueAdapter extends RecyclerView.Adapter implements Filterable { private final ClickCallback click; + private String currentFilter; + private final Filter filtering = new Filter() { @Override protected FilterResults performFiltering(CharSequence constraint) { @@ -32,6 +34,7 @@ public class AlbumCatalogueAdapter extends RecyclerView.Adapter albums) { - this.albums = albums; this.albumsFull = new ArrayList<>(albums); - notifyDataSetChanged(); + filtering.filter(currentFilter); } @Override diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/AlbumCatalogueFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/AlbumCatalogueFragment.java index 3ccf2c99..dc27d5cf 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/AlbumCatalogueFragment.java +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/AlbumCatalogueFragment.java @@ -52,6 +52,12 @@ public class AlbumCatalogueFragment extends Fragment implements ClickCallback { initData(); } + @Override + public void onDestroy() { + super.onDestroy(); + albumCatalogueViewModel.stopLoading(); + } + @Override public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { activity = (MainActivity) getActivity(); @@ -73,7 +79,7 @@ public class AlbumCatalogueFragment extends Fragment implements ClickCallback { private void initData() { albumCatalogueViewModel = new ViewModelProvider(requireActivity()).get(AlbumCatalogueViewModel.class); - albumCatalogueViewModel.loadAlbums(500); + albumCatalogueViewModel.loadAlbums(); } private void initAppBar() { diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/AlbumCatalogueViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/AlbumCatalogueViewModel.java index 7182e5d4..6b86c44f 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/AlbumCatalogueViewModel.java +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/AlbumCatalogueViewModel.java @@ -1,6 +1,7 @@ package com.cappielloantonio.tempo.viewmodel; import android.app.Application; +import android.util.Log; import androidx.annotation.NonNull; import androidx.lifecycle.AndroidViewModel; @@ -22,6 +23,7 @@ public class AlbumCatalogueViewModel extends AndroidViewModel { private final MutableLiveData> albumList = new MutableLiveData<>(new ArrayList<>()); private int page = 0; + private Status status = Status.STOPPED; public AlbumCatalogueViewModel(@NonNull Application application) { super(application); @@ -31,7 +33,19 @@ public class AlbumCatalogueViewModel extends AndroidViewModel { return albumList; } - public void loadAlbums(int size) { + public void loadAlbums() { + page = 0; + albumList.setValue(new ArrayList<>()); + albumList.setValue(new ArrayList<>()); + status = Status.RUNNING; + loadAlbums(500); + } + + public void stopLoading() { + status = Status.STOPPED; + } + + private void loadAlbums(int size) { retrieveAlbums(new MediaCallback() { @Override public void onError(Exception exception) { @@ -39,9 +53,11 @@ public class AlbumCatalogueViewModel extends AndroidViewModel { @Override public void onLoadMedia(List media) { - List liveAlbum = albumList.getValue(); + if (status == Status.STOPPED) { + return; + } - if (liveAlbum == null) liveAlbum = new ArrayList<>(); + List liveAlbum = albumList.getValue(); liveAlbum.addAll((List) media); albumList.setValue(liveAlbum); @@ -73,4 +89,9 @@ public class AlbumCatalogueViewModel extends AndroidViewModel { } }); } + + private enum Status { + RUNNING, + STOPPED + } }