Delete Songs
This commit is contained in:
parent
c724905027
commit
22ad507745
@ -30,4 +30,7 @@ public interface MusicNoteDAO {
|
|||||||
|
|
||||||
@Update
|
@Update
|
||||||
void updateConcert(Concert concert);
|
void updateConcert(Concert concert);
|
||||||
|
|
||||||
|
@Delete
|
||||||
|
void deleteSong(MusicNote musicNote);
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,8 @@ import android.content.Intent;
|
|||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.os.Handler;
|
||||||
|
import android.os.Looper;
|
||||||
import android.provider.OpenableColumns;
|
import android.provider.OpenableColumns;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
@ -50,7 +52,7 @@ public class HomeFragment extends Fragment {
|
|||||||
importBtn.setOnClickListener(v -> openFileChooser());
|
importBtn.setOnClickListener(v -> openFileChooser());
|
||||||
|
|
||||||
RecyclerView recyclerView = root.findViewById(R.id.note_recycler_view);
|
RecyclerView recyclerView = root.findViewById(R.id.note_recycler_view);
|
||||||
noteSongAdapter = new NoteSongAdapter();
|
noteSongAdapter = new NoteSongAdapter(this::deleteSong);
|
||||||
recyclerView.setAdapter(noteSongAdapter);
|
recyclerView.setAdapter(noteSongAdapter);
|
||||||
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
|
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
|
||||||
|
|
||||||
@ -66,6 +68,18 @@ public class HomeFragment extends Fragment {
|
|||||||
return root;
|
return root;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void deleteSong(MusicNote musicNote) {
|
||||||
|
new Thread(() -> {
|
||||||
|
MusicDatabase musicDatabase = MusicDatabase.getDatabase(getContext());
|
||||||
|
MusicNoteDAO musicNoteDAO = musicDatabase.musicNoteDao();
|
||||||
|
musicNoteDAO.deleteSong(musicNote);
|
||||||
|
Log.d("HomeFragment", "Delete Song: " + musicNote.getTitle());
|
||||||
|
new Handler(Looper.getMainLooper()).post(()-> {
|
||||||
|
homeViewModel.deleteSong(musicNote);
|
||||||
|
});
|
||||||
|
}).start();
|
||||||
|
}
|
||||||
|
|
||||||
private class LoadSongTitlesTask extends AsyncTask<Void, Void, List<MusicNote>> {
|
private class LoadSongTitlesTask extends AsyncTask<Void, Void, List<MusicNote>> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -16,6 +16,9 @@ public class HomeViewModel extends ViewModel {
|
|||||||
|
|
||||||
private final MutableLiveData<List<MusicNote>> noteTitles;
|
private final MutableLiveData<List<MusicNote>> noteTitles;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public HomeViewModel() {
|
public HomeViewModel() {
|
||||||
noteTitles = new MutableLiveData<>(new ArrayList<>());
|
noteTitles = new MutableLiveData<>(new ArrayList<>());
|
||||||
}
|
}
|
||||||
@ -28,6 +31,7 @@ public class HomeViewModel extends ViewModel {
|
|||||||
this.noteTitles.setValue(noteTitles);
|
this.noteTitles.setValue(noteTitles);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void addSong(MusicNote song) {
|
public void addSong(MusicNote song) {
|
||||||
List<MusicNote> songs = noteTitles.getValue();
|
List<MusicNote> songs = noteTitles.getValue();
|
||||||
if(songs != null) {
|
if(songs != null) {
|
||||||
@ -35,4 +39,12 @@ public class HomeViewModel extends ViewModel {
|
|||||||
this.noteTitles.setValue(songs);
|
this.noteTitles.setValue(songs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void deleteSong(MusicNote musicNote) {
|
||||||
|
List<MusicNote> currentSongs = noteTitles.getValue();
|
||||||
|
if(currentSongs != null) {
|
||||||
|
currentSongs.remove(musicNote);
|
||||||
|
noteTitles.setValue(currentSongs);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -6,6 +6,7 @@ import android.util.Log;
|
|||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.ImageButton;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
@ -21,12 +22,19 @@ import java.util.List;
|
|||||||
public class NoteSongAdapter extends RecyclerView.Adapter<NoteSongAdapter.NoteViewHolder> {
|
public class NoteSongAdapter extends RecyclerView.Adapter<NoteSongAdapter.NoteViewHolder> {
|
||||||
|
|
||||||
private final List<MusicNote> noteTitles;
|
private final List<MusicNote> noteTitles;
|
||||||
|
private final OnSongDeleteListener onSongDeleteListener;
|
||||||
|
|
||||||
public NoteSongAdapter(List<MusicNote> noteTitles) {
|
public interface OnSongDeleteListener {
|
||||||
this.noteTitles = noteTitles;
|
void onSongDeleted(MusicNote song);
|
||||||
}
|
}
|
||||||
|
|
||||||
public NoteSongAdapter() {
|
public NoteSongAdapter(List<MusicNote> noteTitles, OnSongDeleteListener onSongDeleteListener) {
|
||||||
|
this.noteTitles = noteTitles;
|
||||||
|
this.onSongDeleteListener = onSongDeleteListener;
|
||||||
|
}
|
||||||
|
|
||||||
|
public NoteSongAdapter(OnSongDeleteListener onSongDeleteListener) {
|
||||||
|
this.onSongDeleteListener = onSongDeleteListener;
|
||||||
this.noteTitles = new ArrayList<>();
|
this.noteTitles = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,6 +51,10 @@ public class NoteSongAdapter extends RecyclerView.Adapter<NoteSongAdapter.NoteVi
|
|||||||
holder.titleTextView.setText(noteTitles.get(position).getTitle());
|
holder.titleTextView.setText(noteTitles.get(position).getTitle());
|
||||||
holder.yearTextView.setText(String.valueOf(noteTitles.get(position).getYear()));
|
holder.yearTextView.setText(String.valueOf(noteTitles.get(position).getYear()));
|
||||||
holder.compositionTextView.setText(noteTitles.get(position).getComposer());
|
holder.compositionTextView.setText(noteTitles.get(position).getComposer());
|
||||||
|
|
||||||
|
holder.deleteButton.setOnClickListener(v -> {
|
||||||
|
onSongDeleteListener.onSongDeleted(noteTitles.get(position));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -61,11 +73,16 @@ public class NoteSongAdapter extends RecyclerView.Adapter<NoteSongAdapter.NoteVi
|
|||||||
TextView yearTextView;
|
TextView yearTextView;
|
||||||
TextView compositionTextView;
|
TextView compositionTextView;
|
||||||
|
|
||||||
|
ImageButton deleteButton;
|
||||||
|
|
||||||
NoteViewHolder(View itemView) {
|
NoteViewHolder(View itemView) {
|
||||||
super(itemView);
|
super(itemView);
|
||||||
titleTextView = itemView.findViewById(R.id.text_title);
|
titleTextView = itemView.findViewById(R.id.text_title);
|
||||||
yearTextView = itemView.findViewById(R.id.text_year);
|
yearTextView = itemView.findViewById(R.id.text_year);
|
||||||
compositionTextView = itemView.findViewById(R.id.text_composition);
|
compositionTextView = itemView.findViewById(R.id.text_composition);
|
||||||
|
|
||||||
|
deleteButton = itemView.findViewById(R.id.delete_song_button);
|
||||||
|
|
||||||
titleTextView.setOnClickListener(v -> {
|
titleTextView.setOnClickListener(v -> {
|
||||||
int position = getAdapterPosition();
|
int position = getAdapterPosition();
|
||||||
if(position != RecyclerView.NO_POSITION) {
|
if(position != RecyclerView.NO_POSITION) {
|
||||||
|
@ -56,21 +56,21 @@
|
|||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/edit_concert_button"
|
android:id="@+id/edit_song_button"
|
||||||
android:layout_width="48dp"
|
android:layout_width="48dp"
|
||||||
android:layout_height="48dp"
|
android:layout_height="48dp"
|
||||||
android:src="@drawable/edit_24dp_e8eaed_fill0_wght400_grad0_opsz24"
|
android:src="@drawable/edit_24dp_e8eaed_fill0_wght400_grad0_opsz24"
|
||||||
app:tint="@color/teal_700"
|
app:tint="@color/teal_700"
|
||||||
android:contentDescription="Edit Concert"
|
android:contentDescription="Edit Song"
|
||||||
android:background="?android:selectableItemBackgroundBorderless" />
|
android:background="?android:selectableItemBackgroundBorderless" />
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/delete_concert_button"
|
android:id="@+id/delete_song_button"
|
||||||
android:layout_width="48dp"
|
android:layout_width="48dp"
|
||||||
android:layout_height="48dp"
|
android:layout_height="48dp"
|
||||||
android:src="@drawable/delete"
|
android:src="@drawable/delete"
|
||||||
app:tint="@color/red"
|
app:tint="@color/red"
|
||||||
android:contentDescription="Delete Concert"
|
android:contentDescription="Delete Song"
|
||||||
android:background="?android:selectableItemBackgroundBorderless" />
|
android:background="?android:selectableItemBackgroundBorderless" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user