From b53782832caa5bc0e176ebe6a9ef962a1371bcb4 Mon Sep 17 00:00:00 2001 From: Daniel Bowman Date: Sun, 18 Nov 2018 17:35:25 +0000 Subject: [PATCH] Fix rendering after deleting playlist items Fixes #910 --- .../dsub/adapter/EntryGridAdapterTest.java | 44 +++++++++++++++++++ .../dsub/adapter/EntryGridAdapter.java | 17 +++++-- .../fragments/SelectDirectoryFragment.java | 4 +- 3 files changed, 58 insertions(+), 7 deletions(-) create mode 100644 app/src/androidTest/java/github/daneren2005/dsub/adapter/EntryGridAdapterTest.java diff --git a/app/src/androidTest/java/github/daneren2005/dsub/adapter/EntryGridAdapterTest.java b/app/src/androidTest/java/github/daneren2005/dsub/adapter/EntryGridAdapterTest.java new file mode 100644 index 000000000..32d00535d --- /dev/null +++ b/app/src/androidTest/java/github/daneren2005/dsub/adapter/EntryGridAdapterTest.java @@ -0,0 +1,44 @@ +package github.daneren2005.dsub.adapter; + + +import android.content.Context; +import android.test.AndroidTestCase; +import android.test.mock.MockContext; +import android.util.Log; +import android.view.View; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import github.daneren2005.dsub.domain.MusicDirectory.Entry; + + +public class EntryGridAdapterTest extends AndroidTestCase { + private EntryGridAdapter mAdapter; + + + public EntryGridAdapterTest() { + super(); + } + + protected void setUp() throws Exception { + super.setUp(); + } + + public void testRemoveAt() { + Entry a = new Entry("a"); + Entry c = new Entry("c"); + + List section = new ArrayList<>(Arrays.asList( + a, + new Entry("b"), + c, + new Entry("d"), + new Entry("e"))); + mAdapter = new EntryGridAdapter(null, section, null, false); + + mAdapter.removeAt(Arrays.asList(1, 3, 4)); + assertEquals(new ArrayList<>(Arrays.asList(a, c)), section); + } +} diff --git a/app/src/main/java/github/daneren2005/dsub/adapter/EntryGridAdapter.java b/app/src/main/java/github/daneren2005/dsub/adapter/EntryGridAdapter.java index e75a51047..be20f4469 100644 --- a/app/src/main/java/github/daneren2005/dsub/adapter/EntryGridAdapter.java +++ b/app/src/main/java/github/daneren2005/dsub/adapter/EntryGridAdapter.java @@ -22,6 +22,7 @@ import android.view.View; import android.view.ViewGroup; +import java.util.Iterator; import java.util.List; import github.daneren2005.dsub.R; @@ -129,12 +130,20 @@ public void setShowAlbum(boolean showAlbum) { this.showAlbum = showAlbum; } - public void removeAt(int index) { - sections.get(0).remove(index); - if(header != null) { + public void removeAt(List indices) { + List section = sections.get(0); + + Iterator iter = section.iterator(); + int index = 0; + + while (iter.hasNext()) { + iter.next(); + if (indices.contains(index)){ + iter.remove(); + } index++; } - notifyItemRemoved(index); + notifyDataSetChanged(); } public void setRemoveFromPlaylist(boolean removeFromPlaylist) { diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SelectDirectoryFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SelectDirectoryFragment.java index d3a0bfe84..d1b2c4b87 100644 --- a/app/src/main/java/github/daneren2005/dsub/fragments/SelectDirectoryFragment.java +++ b/app/src/main/java/github/daneren2005/dsub/fragments/SelectDirectoryFragment.java @@ -917,9 +917,7 @@ protected Void doInBackground() throws Throwable { @Override protected void done(Void result) { - for(Integer index: indexes) { - entryGridAdapter.removeAt(index); - } + entryGridAdapter.removeAt(indexes); Util.toast(context, context.getResources().getString(R.string.removed_playlist, String.valueOf(indexes.size()), name)); }