Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5fa3e144 authored by Romain Guy's avatar Romain Guy Committed by Android (Google) Code Review
Browse files

Merge "Fix synchronization issue in ArrayAdapter External bug #19235"

parents 6be4d453 95a78c38
Loading
Loading
Loading
Loading
+12 −12
Original line number Diff line number Diff line
@@ -206,13 +206,9 @@ public class ArrayAdapter<T> extends BaseAdapter implements Filterable {
    public void addAll(T ... items) {
        synchronized (mLock) {
            if (mOriginalValues != null) {
                for (T item : items) {
                    mOriginalValues.add(item);
                }
                Collections.addAll(mOriginalValues, items);
            } else {
                for (T item : items) {
                    mObjects.add(item);
                }
                Collections.addAll(mObjects, items);
            }
        }
        if (mNotifyOnChange) notifyDataSetChanged();
@@ -462,18 +458,22 @@ public class ArrayAdapter<T> extends BaseAdapter implements Filterable {
            }

            if (prefix == null || prefix.length() == 0) {
                ArrayList<T> list;
                synchronized (mLock) {
                    ArrayList<T> list = new ArrayList<T>(mOriginalValues);
                    list = new ArrayList<T>(mOriginalValues);
                }
                results.values = list;
                results.count = list.size();
                }
            } else {
                String prefixString = prefix.toString().toLowerCase();

                final ArrayList<T> values = mOriginalValues;
                final int count = values.size();
                ArrayList<T> values;
                synchronized (mLock) {
                    values = new ArrayList<T>(mOriginalValues);
                }

                final ArrayList<T> newValues = new ArrayList<T>(count);
                final int count = values.size();
                final ArrayList<T> newValues = new ArrayList<T>();

                for (int i = 0; i < count; i++) {
                    final T value = values.get(i);