diff --git a/src/main/java/com/google/android/libraries/feed/piet/ElementAdapter.java b/src/main/java/com/google/android/libraries/feed/piet/ElementAdapter.java
index 7744330..75532f2 100644
--- a/src/main/java/com/google/android/libraries/feed/piet/ElementAdapter.java
+++ b/src/main/java/com/google/android/libraries/feed/piet/ElementAdapter.java
@@ -18,14 +18,17 @@
 import static com.google.android.libraries.feed.piet.StyleProvider.DIMENSION_NOT_SET;
 
 import android.content.Context;
+import android.os.Build;
 import android.support.annotation.VisibleForTesting;
 import android.view.View;
 import android.view.ViewGroup.LayoutParams;
+import android.view.accessibility.AccessibilityNodeInfo;
 import android.widget.FrameLayout;
 import com.google.android.libraries.feed.common.logging.Logger;
 import com.google.android.libraries.feed.piet.DebugLogger.MessageType;
 import com.google.android.libraries.feed.piet.ui.RoundedCornerWrapperView;
 import com.google.search.now.ui.piet.AccessibilityProto.Accessibility;
+import com.google.search.now.ui.piet.AccessibilityProto.AccessibilityRole;
 import com.google.search.now.ui.piet.ActionsProto.Actions;
 import com.google.search.now.ui.piet.ActionsProto.VisibilityAction;
 import com.google.search.now.ui.piet.ElementsProto.BindingValue;
@@ -156,7 +159,6 @@
     initializeOverflow(baseElement);
 
     elementStyle.applyElementStyles(this);
-
     created = true;
   }
 
@@ -250,6 +252,42 @@
     if (getElementStyleIdsStack().hasStyleBinding()) {
       elementStyle.applyElementStyles(this);
     }
+    for (AccessibilityRole role : baseElement.getAccessibility().getRolesList()) {
+      switch (role) {
+        case HEADER:
+          getBaseView().setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);
+          getBaseView().setFocusable(true);
+          if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+            getBaseView()
+                .setAccessibilityDelegate(
+                    new View.AccessibilityDelegate() {
+                      @Override
+                      public void onInitializeAccessibilityNodeInfo(
+                          View host, AccessibilityNodeInfo info) {
+                        super.onInitializeAccessibilityNodeInfo(host, info);
+                        info.setHeading(true);
+                      }
+                    });
+          } else {
+            getBaseView()
+                .setAccessibilityDelegate(
+                    new View.AccessibilityDelegate() {
+                      @Override
+                      public void onInitializeAccessibilityNodeInfo(
+                          View host, AccessibilityNodeInfo info) {
+                        super.onInitializeAccessibilityNodeInfo(host, info);
+                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+                          info.setCollectionItemInfo(
+                              AccessibilityNodeInfo.CollectionItemInfo.obtain(-1, 0, 0, 0, true));
+                        }
+                      }
+                    });
+          }
+          break;
+        default:
+          // Do nothing
+      }
+    }
 
     getBaseView()
         .setContentDescription(
diff --git a/src/test/java/com/google/android/libraries/feed/piet/ElementAdapterTest.java b/src/test/java/com/google/android/libraries/feed/piet/ElementAdapterTest.java
index 96cde7d..ab2c902 100644
--- a/src/test/java/com/google/android/libraries/feed/piet/ElementAdapterTest.java
+++ b/src/test/java/com/google/android/libraries/feed/piet/ElementAdapterTest.java
@@ -35,6 +35,7 @@
 import android.view.ViewGroup;
 import android.view.ViewGroup.LayoutParams;
 import android.view.ViewGroup.MarginLayoutParams;
+import android.view.accessibility.AccessibilityNodeInfo;
 import android.widget.FrameLayout;
 import com.google.android.libraries.feed.common.functional.Suppliers;
 import com.google.android.libraries.feed.common.time.testing.FakeClock;
@@ -46,6 +47,7 @@
 import com.google.android.libraries.feed.piet.ui.RoundedCornerWrapperView;
 import com.google.android.libraries.feed.testing.shadows.ExtendedShadowView;
 import com.google.search.now.ui.piet.AccessibilityProto.Accessibility;
+import com.google.search.now.ui.piet.AccessibilityProto.AccessibilityRole;
 import com.google.search.now.ui.piet.ActionsProto.Action;
 import com.google.search.now.ui.piet.ActionsProto.Actions;
 import com.google.search.now.ui.piet.ActionsProto.VisibilityAction;
@@ -777,12 +779,15 @@
         Element.newBuilder()
             .setAccessibility(
                 Accessibility.newBuilder()
+                    .addRoles(AccessibilityRole.HEADER)
                     .setDescription(ParameterizedText.newBuilder().setText("Accessible!")))
             .build();
 
     adapter.bindModel(accessibilityElement, frameContext);
-
     assertThat(adapter.getView().getContentDescription().toString()).isEqualTo("Accessible!");
+    final AccessibilityNodeInfo nodeInfo = AccessibilityNodeInfo.obtain();
+    adapter.getView().onInitializeAccessibilityNodeInfo(nodeInfo);
+    assertThat(nodeInfo.getCollectionItemInfo().isHeading()).isTrue();
   }
 
   @Test
@@ -1410,4 +1415,5 @@
       heightPx = height;
     }
   }
+
 }
