From 6a4a4ba32e529433ee3b03116979d111562f1579 Mon Sep 17 00:00:00 2001 From: Kazuki Yamaguchi Date: Sun, 11 Oct 2015 00:39:20 +0900 Subject: UnorderedCustomListAdapter: 重複対策してなかった MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../view/adapter/UnorderedCustomListAdapter.java | 31 +++++++++++++--------- 1 file changed, 18 insertions(+), 13 deletions(-) (limited to 'app/src/main/java/net/lacolaco/smileessence/view/adapter') 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 extends CustomListAdapter { // ------------------------------ FIELDS ------------------------------ - protected final List linkedList; + private final List list = new ArrayList<>(); // --------------------------- CONSTRUCTORS --------------------------- public UnorderedCustomListAdapter(Activity activity) { super(activity); - this.linkedList = new LinkedList<>(); } // ------------------------ OVERRIDE METHODS ------------------------ @Override protected List 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 items) { synchronized (LOCK) { - linkedList.addAll(items); + ListIterator 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 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); } } } -- cgit v1.2.3