Fix ExpandableListView context menus when has header views.

createContextMenuInfo() should have been subtracting any
header views, similar to performItemClick().  Previously,
this caused getUnflattenedPos() to return invalid positions.

This fixes http://b/issue?id=1778239
diff --git a/core/java/android/widget/ExpandableListView.java b/core/java/android/widget/ExpandableListView.java
index 5360621..6abb2ae4 100644
--- a/core/java/android/widget/ExpandableListView.java
+++ b/core/java/android/widget/ExpandableListView.java
@@ -33,6 +33,7 @@
 import android.view.SoundEffectConstants;
 import android.view.View;
 import android.view.ContextMenu.ContextMenuInfo;
+import android.widget.AdapterView.AdapterContextMenuInfo;
 import android.widget.ExpandableListConnector.PositionMetadata;
 
 /**
@@ -916,7 +917,14 @@
 
     @Override
     ContextMenuInfo createContextMenuInfo(View view, int flatListPosition, long id) {
-        PositionMetadata pm = mConnector.getUnflattenedPos(flatListPosition);
+        // Adjust for and handle for header views
+        final int adjustedPosition = flatListPosition - getHeaderViewsCount();
+        if (adjustedPosition < 0) {
+            // Return normal info for header view context menus
+            return new AdapterContextMenuInfo(view, flatListPosition, id);
+        }
+
+        PositionMetadata pm = mConnector.getUnflattenedPos(adjustedPosition);
         ExpandableListPosition pos = pm.position;
         pm.recycle();