From 2dfb604d0c80fd4be89159450b1d5b70e3e4ec99 Mon Sep 17 00:00:00 2001 From: ech89899 Date: Tue, 22 Mar 2016 10:26:46 +0400 Subject: [PATCH] Fix getSelectedItems(), add setSelector() method 1. Fix of NullPointerException occurred in getSelectedItems() when viewMap was not initialized 2. setSelector() method added for more convenient setup of HashtagView object, --- .../greenfrvr/hashtagview/HashtagView.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/hashtag-view/src/main/java/com/greenfrvr/hashtagview/HashtagView.java b/hashtag-view/src/main/java/com/greenfrvr/hashtagview/HashtagView.java index 8de3a39..448cc37 100644 --- a/hashtag-view/src/main/java/com/greenfrvr/hashtagview/HashtagView.java +++ b/hashtag-view/src/main/java/com/greenfrvr/hashtagview/HashtagView.java @@ -271,8 +271,7 @@ public boolean removeItem(@NonNull T item) { } /** - * @param transformer Implementation of {@link com.greenfrvr.hashtagview.HashtagView.DataTransform} or - * {@link com.greenfrvr.hashtagview.HashtagView.DataStateTransform} + * @param transformer Implementation of {@link com.greenfrvr.hashtagview.HashtagView.DataTransform} * interface. Can be used for building label from several custom data model * fields or to prepare {@link android.text.Spannable} label representation. * @param Custom data model @@ -281,14 +280,26 @@ public void setTransformer(@NonNull DataTransform transformer) { this.transformer = transformer; } + /** + * @param selector Implementation of {@link com.greenfrvr.hashtagview.HashtagView.DataSelector} + * interface. Can be used to preselect some items. + * @param Custom data model + */ + public void setSelector(@NonNull DataSelector selector) { + this.selector = selector; + } + /** * @return List of selected items. Consists of objects corresponding to custom data model defined by setData() method */ - public List getSelectedItems() { - List selected = new ArrayList<>(); + public List getSelectedItems() { + List selected = new ArrayList<>(); + if (viewMap == null || viewMap.isEmpty()) + return selected; + for (ItemData item : viewMap.values()) { if (item.isSelected) - selected.add(item.data); + selected.add((T) item.data); } return selected; }