summaryrefslogtreecommitdiffstats
path: root/core/java
diff options
context:
space:
mode:
authorMihai Preda <preda@google.com>2009-04-28 14:21:57 +0200
committerMihai Preda <preda@google.com>2009-05-06 11:48:11 +0200
commitb6af533114cfa5a4547990e79e96bd0402c47e72 (patch)
tree5a2cc2e763f5af7487bc4f9ebef4e4ffc6f46fc8 /core/java
parent84c9097d5b919521ed7032db80f044e397856467 (diff)
downloadframeworks_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.java18
-rw-r--r--core/java/android/widget/AdapterView.java2
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.