diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2015-10-11 00:39:20 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2015-10-11 00:39:20 +0900 |
commit | 6a4a4ba32e529433ee3b03116979d111562f1579 (patch) | |
tree | 71767ea8842482d8abeae90298622e583cfc0221 | |
parent | 5c8720dc9129786064d16eccab8fd94ebda12fbd (diff) | |
download | SmileEssence-6a4a4ba32e529433ee3b03116979d111562f1579.tar.gz |
UnorderedCustomListAdapter: 重複対策してなかった
-rw-r--r-- | app/src/main/java/net/lacolaco/smileessence/view/adapter/UnorderedCustomListAdapter.java | 31 |
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); } } } |