From e5b7632e5b3509beb7d0729a9640741d7f4ca466 Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Wed, 6 May 2009 11:12:38 -0700 Subject: [PATCH] Fixes regression introduced in Cupcake: a couple of adapters were using setTag() to store their own data, which could interfere with the use of setTag() made by the applications. The fix is quite simple an rely on a WeakHashMap to store the holders within the adapters; using the Views as the keys of the map. --- core/java/android/widget/SimpleAdapter.java | 6 ++++-- core/java/android/widget/SimpleCursorAdapter.java | 7 +++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/core/java/android/widget/SimpleAdapter.java b/core/java/android/widget/SimpleAdapter.java index 093c24e0ca58e..9dd4d151df1a6 100644 --- a/core/java/android/widget/SimpleAdapter.java +++ b/core/java/android/widget/SimpleAdapter.java @@ -25,6 +25,7 @@ import android.net.Uri; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.WeakHashMap; /** * An easy adapter to map static data to views defined in an XML file. You can specify the data @@ -57,6 +58,7 @@ public class SimpleAdapter extends BaseAdapter implements Filterable { private int mResource; private int mDropDownResource; private LayoutInflater mInflater; + private final WeakHashMap mHolders = new WeakHashMap(); private SimpleFilter mFilter; private ArrayList> mUnfilteredData; @@ -128,7 +130,7 @@ public class SimpleAdapter extends BaseAdapter implements Filterable { holder[i] = v.findViewById(to[i]); } - v.setTag(holder); + mHolders.put(v, holder); } else { v = convertView; } @@ -160,7 +162,7 @@ public class SimpleAdapter extends BaseAdapter implements Filterable { } final ViewBinder binder = mViewBinder; - final View[] holder = (View[]) view.getTag(); + final View[] holder = mHolders.get(view); final String[] from = mFrom; final int[] to = mTo; final int count = to.length; diff --git a/core/java/android/widget/SimpleCursorAdapter.java b/core/java/android/widget/SimpleCursorAdapter.java index c1bcd4219c58e..b6a49e5bd5f79 100644 --- a/core/java/android/widget/SimpleCursorAdapter.java +++ b/core/java/android/widget/SimpleCursorAdapter.java @@ -22,6 +22,8 @@ import android.net.Uri; import android.view.View; import android.view.ViewGroup; +import java.util.WeakHashMap; + /** * An easy adapter to map columns from a cursor to TextViews or ImageViews * defined in an XML file. You can specify which columns you want, which @@ -64,6 +66,7 @@ public class SimpleCursorAdapter extends ResourceCursorAdapter { private CursorToStringConverter mCursorToStringConverter; private ViewBinder mViewBinder; private String[] mOriginalFrom; + private final WeakHashMap mHolders = new WeakHashMap(); /** * Constructor. @@ -106,7 +109,7 @@ public class SimpleCursorAdapter extends ResourceCursorAdapter { for (int i = 0; i < count; i++) { holder[i] = v.findViewById(to[i]); } - v.setTag(holder); + mHolders.put(v, holder); return v; } @@ -137,7 +140,7 @@ public class SimpleCursorAdapter extends ResourceCursorAdapter { */ @Override public void bindView(View view, Context context, Cursor cursor) { - final View[] holder = (View[]) view.getTag(); + final View[] holder = mHolders.get(view); final ViewBinder binder = mViewBinder; final int count = mTo.length; final int[] from = mFrom;