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