Delete Songs
This commit is contained in:
parent
ae85c7db5a
commit
cf9b66b648
@ -4,6 +4,7 @@ import androidx.lifecycle.LiveData;
|
||||
import androidx.room.Dao;
|
||||
import androidx.room.Insert;
|
||||
import androidx.room.Query;
|
||||
import androidx.room.Update;
|
||||
import com.stormtales.notevault.data.entities.Song;
|
||||
|
||||
import java.util.List;
|
||||
@ -13,6 +14,9 @@ public interface SongDao {
|
||||
@Insert
|
||||
void insert(Song song);
|
||||
|
||||
@Query("SELECT * FROM song")
|
||||
@Query("SELECT * FROM song WHERE syncStatus != 1")
|
||||
List<Song> getAllSongs();
|
||||
|
||||
@Update
|
||||
void update(Song song);
|
||||
}
|
||||
|
@ -37,4 +37,10 @@ public class SongRepository {
|
||||
mainHandler.post(()-> callback.onResult(songs));
|
||||
});
|
||||
}
|
||||
|
||||
public void updateSong(Song song) {
|
||||
Executors.newSingleThreadExecutor().execute(() -> {
|
||||
songDao.update(song);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -27,6 +27,7 @@ import com.stormtales.notevault.databinding.FragmentHomeBinding;
|
||||
import com.stormtales.notevault.ui.songeditor.SongEditorDialog;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class HomeFragment extends Fragment {
|
||||
|
||||
@ -83,7 +84,7 @@ public class HomeFragment extends Fragment {
|
||||
});
|
||||
|
||||
// RecyclerView einrichten
|
||||
songAdapter = new SongAdapter(new ArrayList<>(), new SongEventClickListener());
|
||||
songAdapter = new SongAdapter(new ArrayList<>(), this::onEditSong, this::onDeleteSong);
|
||||
recyclerView.setAdapter(songAdapter);
|
||||
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
|
||||
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(recyclerView.getContext(), LinearLayoutManager.VERTICAL);
|
||||
@ -110,15 +111,11 @@ public class HomeFragment extends Fragment {
|
||||
songEditorDialog.show(getParentFragmentManager(), "songEditorDialog");
|
||||
}
|
||||
|
||||
private static class SongEventClickListener implements SongAdapter.OnSongEventClickListener {
|
||||
@Override
|
||||
public void onEditSong(Song song) {
|
||||
public void onEditSong(Song song) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDeleteSong(Song song) {
|
||||
|
||||
}
|
||||
public void onDeleteSong(Song song) {
|
||||
this.homeViewModel.deleteSong(song);
|
||||
}
|
||||
}
|
@ -8,6 +8,7 @@ import androidx.lifecycle.MutableLiveData;
|
||||
import androidx.lifecycle.ViewModel;
|
||||
import com.stormtales.notevault.data.entities.Song;
|
||||
import com.stormtales.notevault.data.repositories.SongRepository;
|
||||
import com.stormtales.notevault.data.sync.SyncStatus;
|
||||
import kotlinx.coroutines.CoroutineScope;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@ -51,4 +52,15 @@ public class HomeViewModel extends ViewModel {
|
||||
public void loadAllSongs() {
|
||||
songRepository.getAllSongs(songs->allSongs.setValue(songs));
|
||||
}
|
||||
|
||||
public void deleteSong(Song song) {
|
||||
song.setSyncStatus(SyncStatus.DELETED);
|
||||
songRepository.updateSong(song);
|
||||
|
||||
List<Song> currentSongs = allSongs.getValue();
|
||||
if(currentSongs != null) {
|
||||
currentSongs.remove(song);
|
||||
allSongs.setValue(currentSongs);
|
||||
}
|
||||
}
|
||||
}
|
@ -18,11 +18,13 @@ import java.util.List;
|
||||
public class SongAdapter extends RecyclerView.Adapter<SongAdapter.SongViewHolder> {
|
||||
|
||||
private List<Song> songList;
|
||||
private OnSongEventClickListener onSongEventClickListener;
|
||||
private OnEditSongListener onEditSongListener;
|
||||
private OnDeleteSongListener onDeleteSongListener;
|
||||
|
||||
public SongAdapter(List<Song> songList, OnSongEventClickListener onSongEventClickListener) {
|
||||
public SongAdapter(List<Song> songList, OnEditSongListener onEditSongListener, OnDeleteSongListener onDeleteSongListener) {
|
||||
this.songList = songList;
|
||||
this.onSongEventClickListener = onSongEventClickListener;
|
||||
this.onEditSongListener = onEditSongListener;
|
||||
this.onDeleteSongListener = onDeleteSongListener;
|
||||
}
|
||||
|
||||
public void updateData(List<Song> songs) {
|
||||
@ -64,8 +66,8 @@ public class SongAdapter extends RecyclerView.Adapter<SongAdapter.SongViewHolder
|
||||
holder.textComposition.setText(song.getComposer());
|
||||
holder.textTitle.setText(song.getTitle());
|
||||
|
||||
holder.editButton.setOnClickListener(v -> onSongEventClickListener.onEditSong(song));
|
||||
holder.deleteButton.setOnClickListener(v -> onSongEventClickListener.onDeleteSong(song));
|
||||
holder.editButton.setOnClickListener(v -> onEditSongListener.onEditSong(song));
|
||||
holder.deleteButton.setOnClickListener(v -> onDeleteSongListener.onDeleteSong(song));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -73,8 +75,11 @@ public class SongAdapter extends RecyclerView.Adapter<SongAdapter.SongViewHolder
|
||||
return songList.size();
|
||||
}
|
||||
|
||||
public interface OnSongEventClickListener {
|
||||
public interface OnEditSongListener {
|
||||
void onEditSong(Song song);
|
||||
}
|
||||
|
||||
public interface OnDeleteSongListener {
|
||||
void onDeleteSong(Song song);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user