diff options
author | Mihai Preda <preda@google.com> | 2009-04-28 14:21:57 +0200 |
---|---|---|
committer | Mihai Preda <preda@google.com> | 2009-05-06 11:48:11 +0200 |
commit | b6af533114cfa5a4547990e79e96bd0402c47e72 (patch) | |
tree | 5a2cc2e763f5af7487bc4f9ebef4e4ffc6f46fc8 /core/java | |
parent | 84c9097d5b919521ed7032db80f044e397856467 (diff) | |
download | frameworks_base-b6af533114cfa5a4547990e79e96bd0402c47e72.zip frameworks_base-b6af533114cfa5a4547990e79e96bd0402c47e72.tar.gz frameworks_base-b6af533114cfa5a4547990e79e96bd0402c47e72.tar.bz2 |
Allow ViewStub to be used in AdapterView.setEmptyView() (bug 1803058)
Diffstat (limited to 'core/java')
-rw-r--r-- | core/java/android/view/ViewStub.java | 18 | ||||
-rw-r--r-- | core/java/android/widget/AdapterView.java | 2 |
2 files changed, 16 insertions, 4 deletions
diff --git a/core/java/android/view/ViewStub.java b/core/java/android/view/ViewStub.java index e159de4..703a38f 100644 --- a/core/java/android/view/ViewStub.java +++ b/core/java/android/view/ViewStub.java @@ -23,6 +23,8 @@ import android.util.AttributeSet; import com.android.internal.R; +import java.lang.ref.WeakReference; + /** * A ViewStub is an invisible, zero-sized View that can be used to lazily inflate * layout resources at runtime. @@ -68,6 +70,8 @@ public final class ViewStub extends View { private int mLayoutResource = 0; private int mInflatedId; + private WeakReference<View> mInflatedViewRef; + private OnInflateListener mInflateListener; public ViewStub(Context context) { @@ -196,9 +200,15 @@ public final class ViewStub extends View { */ @Override public void setVisibility(int visibility) { - super.setVisibility(visibility); - - if (visibility == VISIBLE || visibility == INVISIBLE) { + if (mInflatedViewRef != null) { + View view = mInflatedViewRef.get(); + if (view != null) { + view.setVisibility(visibility); + } else { + throw new IllegalStateException("setVisibility called on un-referenced view"); + } + } else if (visibility == VISIBLE || visibility == INVISIBLE) { + super.setVisibility(visibility); inflate(); } } @@ -234,6 +244,8 @@ public final class ViewStub extends View { parent.addView(view, index); } + mInflatedViewRef = new WeakReference(view); + if (mInflateListener != null) { mInflateListener.onInflate(this, view); } diff --git a/core/java/android/widget/AdapterView.java b/core/java/android/widget/AdapterView.java index 173e80f..afa67c4 100644 --- a/core/java/android/widget/AdapterView.java +++ b/core/java/android/widget/AdapterView.java @@ -162,7 +162,7 @@ public abstract class AdapterView<T extends Adapter> extends ViewGroup { /** * View to show if there are no items to show. */ - View mEmptyView; + private View mEmptyView; /** * The number of items in the current adapter. |