Clear accessibility delegete from recycled views
When a view is recycled, RecyclerView should clean the accessibility
delegate. Not doing so was causing problems if View is added to
another container which is not a Collection
Bug: 17739472
Change-Id: I45c5895342f33fa485daae178ad508bda0fb4f68
diff --git a/v4/Android.mk b/v4/Android.mk
index dbebab4..a43a5cc 100644
--- a/v4/Android.mk
+++ b/v4/Android.mk
@@ -19,6 +19,7 @@
LOCAL_MODULE := android-support-v4-donut
LOCAL_SDK_VERSION := 4
LOCAL_SRC_FILES := $(call all-java-files-under, donut)
+LOCAL_STATIC_JAVA_LIBRARIES := android-support-annotations
include $(BUILD_STATIC_JAVA_LIBRARY)
# -----------------------------------------------------------------------
@@ -183,5 +184,4 @@
$(call all-Iaidl-files-under, java)
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v4-api21
-LOCAL_STATIC_JAVA_LIBRARIES += android-support-annotations
include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/v4/build.gradle b/v4/build.gradle
index fed5c24..eb3b601 100644
--- a/v4/build.gradle
+++ b/v4/build.gradle
@@ -55,6 +55,7 @@
dependencies {
compile project(':support-annotations')
+ donutCompile project(':support-annotations')
// add the internal implementation as a dependency.
// this is not enough to make the regular compileJava task
diff --git a/v4/ics/android/support/v4/view/ViewCompatICS.java b/v4/ics/android/support/v4/view/ViewCompatICS.java
index 82aeaf3..da7929c 100644
--- a/v4/ics/android/support/v4/view/ViewCompatICS.java
+++ b/v4/ics/android/support/v4/view/ViewCompatICS.java
@@ -16,6 +16,7 @@
package android.support.v4.view;
+import android.support.annotation.Nullable;
import android.view.View;
import android.view.View.AccessibilityDelegate;
import android.view.accessibility.AccessibilityEvent;
@@ -34,7 +35,7 @@
return v.canScrollVertically(direction);
}
- public static void setAccessibilityDelegate(View v, Object delegate) {
+ public static void setAccessibilityDelegate(View v, @Nullable Object delegate) {
v.setAccessibilityDelegate((AccessibilityDelegate) delegate);
}
diff --git a/v4/java/android/support/v4/view/ViewCompat.java b/v4/java/android/support/v4/view/ViewCompat.java
index a8445c9..aa3bd00 100644
--- a/v4/java/android/support/v4/view/ViewCompat.java
+++ b/v4/java/android/support/v4/view/ViewCompat.java
@@ -23,6 +23,7 @@
import android.os.Bundle;
import android.support.annotation.IdRes;
import android.support.annotation.IntDef;
+import android.support.annotation.Nullable;
import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
import android.support.v4.view.accessibility.AccessibilityNodeProviderCompat;
import android.util.Log;
@@ -261,7 +262,7 @@
public void onInitializeAccessibilityEvent(View v, AccessibilityEvent event);
public void onPopulateAccessibilityEvent(View v, AccessibilityEvent event);
public void onInitializeAccessibilityNodeInfo(View v, AccessibilityNodeInfoCompat info);
- public void setAccessibilityDelegate(View v, AccessibilityDelegateCompat delegate);
+ public void setAccessibilityDelegate(View v, @Nullable AccessibilityDelegateCompat delegate);
public boolean hasAccessibilityDelegate(View v);
public boolean hasTransientState(View view);
public void setHasTransientState(View view, boolean hasTransientState);
@@ -930,8 +931,10 @@
ViewCompatICS.onInitializeAccessibilityNodeInfo(v, info.getInfo());
}
@Override
- public void setAccessibilityDelegate(View v, AccessibilityDelegateCompat delegate) {
- ViewCompatICS.setAccessibilityDelegate(v, delegate.getBridge());
+ public void setAccessibilityDelegate(View v,
+ @Nullable AccessibilityDelegateCompat delegate) {
+ ViewCompatICS.setAccessibilityDelegate(v,
+ delegate == null ? null : delegate.getBridge());
}
@Override