Skip to content

Commit 2e8de42

Browse files
vrihparoj
authored andcommitted
Fix rendering after deleting playlist items
Fixes daneren2005#910
1 parent c6b3189 commit 2e8de42

File tree

3 files changed

+58
-7
lines changed

3 files changed

+58
-7
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package github.daneren2005.dsub.adapter;
2+
3+
4+
import android.content.Context;
5+
import android.test.AndroidTestCase;
6+
import android.test.mock.MockContext;
7+
import android.util.Log;
8+
import android.view.View;
9+
10+
import java.util.ArrayList;
11+
import java.util.Arrays;
12+
import java.util.List;
13+
14+
import github.daneren2005.dsub.domain.MusicDirectory.Entry;
15+
16+
17+
public class EntryGridAdapterTest extends AndroidTestCase {
18+
private EntryGridAdapter mAdapter;
19+
20+
21+
public EntryGridAdapterTest() {
22+
super();
23+
}
24+
25+
protected void setUp() throws Exception {
26+
super.setUp();
27+
}
28+
29+
public void testRemoveAt() {
30+
Entry a = new Entry("a");
31+
Entry c = new Entry("c");
32+
33+
List<Entry> section = new ArrayList<>(Arrays.asList(
34+
a,
35+
new Entry("b"),
36+
c,
37+
new Entry("d"),
38+
new Entry("e")));
39+
mAdapter = new EntryGridAdapter(null, section, null, false);
40+
41+
mAdapter.removeAt(Arrays.asList(1, 3, 4));
42+
assertEquals(new ArrayList<>(Arrays.asList(a, c)), section);
43+
}
44+
}

Diff for: app/src/main/java/github/daneren2005/dsub/adapter/EntryGridAdapter.java

+13-4
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import android.view.View;
2323
import android.view.ViewGroup;
2424

25+
import java.util.Iterator;
2526
import java.util.List;
2627

2728
import github.daneren2005.dsub.R;
@@ -129,12 +130,20 @@ public void setShowAlbum(boolean showAlbum) {
129130
this.showAlbum = showAlbum;
130131
}
131132

132-
public void removeAt(int index) {
133-
sections.get(0).remove(index);
134-
if(header != null) {
133+
public void removeAt(List<Integer> indices) {
134+
List<Entry> section = sections.get(0);
135+
136+
Iterator iter = section.iterator();
137+
int index = 0;
138+
139+
while (iter.hasNext()) {
140+
iter.next();
141+
if (indices.contains(index)){
142+
iter.remove();
143+
}
135144
index++;
136145
}
137-
notifyItemRemoved(index);
146+
notifyDataSetChanged();
138147
}
139148

140149
public void setRemoveFromPlaylist(boolean removeFromPlaylist) {

Diff for: app/src/main/java/github/daneren2005/dsub/fragments/SelectDirectoryFragment.java

+1-3
Original file line numberDiff line numberDiff line change
@@ -917,9 +917,7 @@ protected Void doInBackground() throws Throwable {
917917

918918
@Override
919919
protected void done(Void result) {
920-
for(Integer index: indexes) {
921-
entryGridAdapter.removeAt(index);
922-
}
920+
entryGridAdapter.removeAt(indexes);
923921
Util.toast(context, context.getResources().getString(R.string.removed_playlist, String.valueOf(indexes.size()), name));
924922
}
925923

0 commit comments

Comments
 (0)