Fix NavigationView talkback

NavigationView should not announce the checked states of its
non-checkable items.

Bug: 29738248
Change-Id: Iff9783e4002f91d8db2682d486650209bc50e142
diff --git a/design/src/android/support/design/internal/NavigationMenuItemView.java b/design/src/android/support/design/internal/NavigationMenuItemView.java
index 1f70a04..9d20cfa 100644
--- a/design/src/android/support/design/internal/NavigationMenuItemView.java
+++ b/design/src/android/support/design/internal/NavigationMenuItemView.java
@@ -25,6 +25,10 @@
 import android.support.design.R;
 import android.support.v4.content.res.ResourcesCompat;
 import android.support.v4.graphics.drawable.DrawableCompat;
+import android.support.v4.view.AccessibilityDelegateCompat;
+import android.support.v4.view.ViewCompat;
+import android.support.v4.view.accessibility.AccessibilityEventCompat;
+import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
 import android.support.v4.widget.TextViewCompat;
 import android.support.v7.view.menu.MenuItemImpl;
 import android.support.v7.view.menu.MenuView;
@@ -47,6 +51,8 @@
 
     private boolean mNeedsEmptyIcon;
 
+    private boolean mCheckable;
+
     private final CheckedTextView mTextView;
 
     private FrameLayout mActionArea;
@@ -57,6 +63,18 @@
 
     private Drawable mEmptyDrawable;
 
+    private final AccessibilityDelegateCompat mAccessibilityDelegate
+            = new AccessibilityDelegateCompat() {
+
+        @Override
+        public void onInitializeAccessibilityNodeInfo(View host,
+                AccessibilityNodeInfoCompat info) {
+            super.onInitializeAccessibilityNodeInfo(host, info);
+            info.setCheckable(mCheckable);
+        }
+
+    };
+
     public NavigationMenuItemView(Context context) {
         this(context, null);
     }
@@ -73,6 +91,7 @@
                 R.dimen.design_navigation_icon_size);
         mTextView = (CheckedTextView) findViewById(R.id.design_menu_item_text);
         mTextView.setDuplicateParentStateEnabled(true);
+        ViewCompat.setAccessibilityDelegate(mTextView, mAccessibilityDelegate);
     }
 
     @Override
@@ -162,6 +181,11 @@
     @Override
     public void setCheckable(boolean checkable) {
         refreshDrawableState();
+        if (mCheckable != checkable) {
+            mCheckable = checkable;
+            mAccessibilityDelegate.sendAccessibilityEvent(mTextView,
+                    AccessibilityEventCompat.TYPE_WINDOW_CONTENT_CHANGED);
+        }
     }
 
     @Override