aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2015-10-11 00:39:20 +0900
committerKazuki Yamaguchi <k@rhe.jp>2015-10-11 00:39:20 +0900
commit6a4a4ba32e529433ee3b03116979d111562f1579 (patch)
tree71767ea8842482d8abeae90298622e583cfc0221
parent5c8720dc9129786064d16eccab8fd94ebda12fbd (diff)
downloadSmileEssence-6a4a4ba32e529433ee3b03116979d111562f1579.tar.gz
UnorderedCustomListAdapter: 重複対策してなかった
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/adapter/UnorderedCustomListAdapter.java31
1 files changed, 18 insertions, 13 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/adapter/UnorderedCustomListAdapter.java b/app/src/main/java/net/lacolaco/smileessence/view/adapter/UnorderedCustomListAdapter.java
index 9d3c1d2c..8e72cc80 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/adapter/UnorderedCustomListAdapter.java
+++ b/app/src/main/java/net/lacolaco/smileessence/view/adapter/UnorderedCustomListAdapter.java
@@ -27,66 +27,71 @@ package net.lacolaco.smileessence.view.adapter;
import android.app.Activity;
import net.lacolaco.smileessence.viewmodel.IViewModel;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
+import java.util.*;
public class UnorderedCustomListAdapter<T extends IViewModel> extends CustomListAdapter<T> {
// ------------------------------ FIELDS ------------------------------
- protected final List<T> linkedList;
+ private final List<T> list = new ArrayList<>();
// --------------------------- CONSTRUCTORS ---------------------------
public UnorderedCustomListAdapter(Activity activity) {
super(activity);
- this.linkedList = new LinkedList<>();
}
// ------------------------ OVERRIDE METHODS ------------------------
@Override
protected List<T> getFrozenList() {
- return Collections.unmodifiableList(new ArrayList<>(linkedList));
+ return Collections.unmodifiableList(new ArrayList<>(list));
}
// -------------------------- OTHER METHODS --------------------------
public void addItemToTop(T item) {
synchronized (LOCK) {
- linkedList.add(item);
+ if (list.contains(item)) {
+ list.add(0, item);
+ }
}
}
public void addItemsToTop(List<T> items) {
synchronized (LOCK) {
- linkedList.addAll(items);
+ ListIterator<T> iterator = items.listIterator(items.size());
+ while (iterator.hasPrevious()) {
+ addItemToTop(iterator.previous());
+ }
}
}
public void addItemToBottom(T item) {
synchronized (LOCK) {
- linkedList.add(0, item);
+ if (list.contains(item)) {
+ list.add(item);
+ }
}
}
public void addItemsToBottom(List<T> items) {
synchronized (LOCK) {
- linkedList.addAll(0, items);
+ for (T item : items) {
+ addItemToBottom(item);
+ }
}
}
public void clear() {
synchronized (LOCK) {
- linkedList.clear();
+ list.clear();
}
}
public boolean removeItem(T item) {
synchronized (LOCK) {
- return linkedList.remove(item);
+ return list.remove(item);
}
}
}