diff options
| author | Bananeweizen <bananeweizen@gmx.de> | 2013-09-14 14:21:22 +0200 |
|---|---|---|
| committer | Bananeweizen <bananeweizen@gmx.de> | 2013-09-14 14:21:34 +0200 |
| commit | 947792ed914e4309ecb5159e9878ed15ea1125c9 (patch) | |
| tree | c62689ef2b6ffa7bb1568e9525ed2760e45aec9a /main/src/cgeo/geocaching/list | |
| parent | 3d5d4c46327244244003982f71aa627d1407d5c3 (diff) | |
| download | cgeo-947792ed914e4309ecb5159e9878ed15ea1125c9.zip cgeo-947792ed914e4309ecb5159e9878ed15ea1125c9.tar.gz cgeo-947792ed914e4309ecb5159e9878ed15ea1125c9.tar.bz2 | |
refactoring: StoredList
* try more encapsulation instead of ID comparisons all time
Diffstat (limited to 'main/src/cgeo/geocaching/list')
| -rw-r--r-- | main/src/cgeo/geocaching/list/AbstractList.java | 15 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/list/PseudoList.java | 21 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/list/StoredList.java | 12 |
3 files changed, 42 insertions, 6 deletions
diff --git a/main/src/cgeo/geocaching/list/AbstractList.java b/main/src/cgeo/geocaching/list/AbstractList.java index c75c6a1..ec783eb 100644 --- a/main/src/cgeo/geocaching/list/AbstractList.java +++ b/main/src/cgeo/geocaching/list/AbstractList.java @@ -1,15 +1,28 @@ package cgeo.geocaching.list; -abstract class AbstractList { +import org.eclipse.jdt.annotation.Nullable; + +import android.util.SparseArray; + +public abstract class AbstractList { public final int id; public final String title; + private static SparseArray<AbstractList> LISTS = new SparseArray<AbstractList>(); public AbstractList(final int id, final String title) { this.id = id; this.title = title; + LISTS.put(id, this); } public abstract String getTitleAndCount(); + public abstract boolean isConcrete(); + + @Nullable + public static AbstractList getListById(int listId) { + return LISTS.get(listId); + } + } diff --git a/main/src/cgeo/geocaching/list/PseudoList.java b/main/src/cgeo/geocaching/list/PseudoList.java index c93f011..365d6fd 100644 --- a/main/src/cgeo/geocaching/list/PseudoList.java +++ b/main/src/cgeo/geocaching/list/PseudoList.java @@ -5,10 +5,22 @@ import cgeo.geocaching.R; public class PseudoList extends AbstractList { - public static final int ALL_LIST_ID = 2; + private static final int ALL_LIST_ID = 2; + /** + * list entry to show all caches + */ public static final PseudoList ALL_LIST = new PseudoList(ALL_LIST_ID, R.string.list_all_lists); - public PseudoList(int id, final int titleResourceId) { + private static final int NEW_LIST_ID = 3; + /** + * list entry to create a new list + */ + public static final AbstractList NEW_LIST = new PseudoList(NEW_LIST_ID, R.string.list_menu_create); + + /** + * private constructor to have all instances as constants in the class + */ + private PseudoList(int id, final int titleResourceId) { super(id, CgeoApplication.getInstance().getResources().getString(titleResourceId)); } @@ -17,4 +29,9 @@ public class PseudoList extends AbstractList { return "<" + title + ">"; } + @Override + public boolean isConcrete() { + return false; + } + } diff --git a/main/src/cgeo/geocaching/list/StoredList.java b/main/src/cgeo/geocaching/list/StoredList.java index f1632c4..feb40c7 100644 --- a/main/src/cgeo/geocaching/list/StoredList.java +++ b/main/src/cgeo/geocaching/list/StoredList.java @@ -89,12 +89,12 @@ public final class StoredList extends AbstractList { if (!onlyConcreteLists) { lists.add(PseudoList.ALL_LIST); } + lists.add(PseudoList.NEW_LIST); final List<CharSequence> listsTitle = new ArrayList<CharSequence>(); for (AbstractList list : lists) { listsTitle.add(list.getTitleAndCount()); } - listsTitle.add("<" + res.getString(R.string.list_menu_create) + ">"); final CharSequence[] items = new CharSequence[listsTitle.size()]; @@ -103,7 +103,8 @@ public final class StoredList extends AbstractList { builder.setItems(listsTitle.toArray(items), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int itemId) { - if (itemId >= lists.size()) { + final AbstractList list = lists.get(itemId); + if (list == PseudoList.NEW_LIST) { // create new list on the fly promptForListCreation(runAfterwards, newListName); } @@ -208,10 +209,15 @@ public final class StoredList extends AbstractList { * Return the given list, if it is a concrete list. Return the default list otherwise. */ public static int getConcreteList(int listId) { - if (listId == PseudoList.ALL_LIST_ID || listId == TEMPORARY_LIST_ID) { + if (listId == PseudoList.ALL_LIST.id || listId == TEMPORARY_LIST_ID) { return STANDARD_LIST_ID; } return listId; } + @Override + public boolean isConcrete() { + return true; + } + } |
