From 8c582ef859fcbbb97623d22024c3ecb32b65c5ef Mon Sep 17 00:00:00 2001 From: Christian Mehlmauer Date: Fri, 11 Jun 2010 22:28:38 +0200 Subject: Added an addAll to the ArrayAdapter It behaves the same as ArrayList.addAll, since the Object containing the Objects in the Adapter is a List. Now you can add multiple Objects at once, instead of looping over a Collection and add all items one by one. Unittests will be submitted to the cts project Change-Id: I16f3286a8ca4cda7eb9f1a99c2aab1cc45b2550f --- api/current.xml | 28 ++++++++++++++++++- core/java/android/widget/ArrayAdapter.java | 43 ++++++++++++++++++++++++++++-- 2 files changed, 68 insertions(+), 3 deletions(-) diff --git a/api/current.xml b/api/current.xml index eb01451..e06996d 100644 --- a/api/current.xml +++ b/api/current.xml @@ -181308,6 +181308,32 @@ + + + + + + + + - + diff --git a/core/java/android/widget/ArrayAdapter.java b/core/java/android/widget/ArrayAdapter.java index 32e5504..03ada94 100644 --- a/core/java/android/widget/ArrayAdapter.java +++ b/core/java/android/widget/ArrayAdapter.java @@ -24,6 +24,7 @@ import android.view.ViewGroup; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.List; import java.util.Comparator; import java.util.Collections; @@ -83,7 +84,7 @@ public class ArrayAdapter extends BaseAdapter implements Filterable { */ private boolean mNotifyOnChange = true; - private Context mContext; + private Context mContext; private ArrayList mOriginalValues; private ArrayFilter mFilter; @@ -181,6 +182,44 @@ public class ArrayAdapter extends BaseAdapter implements Filterable { } /** + * Adds the specified Collection at the end of the array. + * + * @param collection The Collection to add at the end of the array. + */ + public void addAll(Collection collection) { + if (mOriginalValues != null) { + synchronized (mLock) { + mOriginalValues.addAll(collection); + if (mNotifyOnChange) notifyDataSetChanged(); + } + } else { + mObjects.addAll(collection); + if (mNotifyOnChange) notifyDataSetChanged(); + } + } + + /** + * Adds the specified items at the end of the array. + * + * @param items The items to add at the end of the array. + */ + public void addAll(T ... items) { + if (mOriginalValues != null) { + synchronized (mLock) { + for (T item : items) { + mOriginalValues.add(item); + } + if (mNotifyOnChange) notifyDataSetChanged(); + } + } else { + for (T item : items) { + mObjects.add(item); + } + if (mNotifyOnChange) notifyDataSetChanged(); + } + } + + /** * Inserts the specified object at the specified index in the array. * * @param object The object to insert into the array. @@ -236,7 +275,7 @@ public class ArrayAdapter extends BaseAdapter implements Filterable { */ public void sort(Comparator comparator) { Collections.sort(mObjects, comparator); - if (mNotifyOnChange) notifyDataSetChanged(); + if (mNotifyOnChange) notifyDataSetChanged(); } /** -- cgit v1.1