V2 map Android gridview внутри InfoWindow: реализация OnItemClickListener

Используя этот ответ: Google Maps Android API v2 - Интерактивный InfoWindow (как в оригинальных картах Google Android)

Я хочу знать, как изменить эту реализацию с onTouchListener на onItemClickedListener. Как мне изменить dispatchTouchEvent в MapWrapperLayout для работы с gridview?

Вот адаптированный OnInfoWindowElemTouchListener, реализующий OnItemClickListener для gridview

public abstract class OnInfoWindowElemTouchListener implements AdapterView.OnItemClickListener {
  private final View mainView;
  private Marker marker;


  public OnInfoWindowElemTouchListener(View view) {
    this.mainView = view;
  }
  public void setMarker(Marker marker) {
    this.marker = marker;
  }

  @Override
  public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    onItemClickConfirmed(marker, parent, mainView, position, id);
    System.out.println("click item");
  }

  protected abstract void onItemClickConfirmed(Marker marker, AdapterView<?> parent, View view, int position, long id);
}

В настоящее время используется dispatchTouchEvent из реализации onTouchListener

 @Override
  public boolean dispatchTouchEvent(MotionEvent ev) {
    boolean ret = false;
    // Make sure that the infoWindow is shown and we have all the needed references
    if (marker != null && marker.isInfoWindowShown() && map != null && infoWindow != null) {
      // Get a marker position on the screen
      Point point = map.getProjection().toScreenLocation(marker.getPosition());

      // Make a copy of the MotionEvent and adjust it location
      // so it is relative to the infoWindow left top corner
      MotionEvent copyEv = MotionEvent.obtain(ev);
      copyEv.offsetLocation(
          -point.x + (infoWindow.getWidth() / 2),
          -point.y + infoWindow.getHeight() + bottomOffsetPixels);

      // Dispatch the adjusted MotionEvent to the infoWindow
      ret = infoWindow.dispatchTouchEvent(copyEv);
    }
    // If the infoWindow consumed the touch event, then just return true.
    // Otherwise pass this event to the super class and return it result
    return ret || super.dispatchTouchEvent(ev);
  }

Как я объединил его в своей деятельности внутри обратного вызова OnMapReady:   this.infoWindow = (ViewGroup) getLayoutInflater(). inflate (R.layout.infowindow, null);

//Prepare infoWindow
GridView gridview = (GridView) infoWindow.findViewById(R.id.gridview);
gridview.setBackgroundResource(R.color.iconbox_bg);
gridview.setAdapter(new IconboxAdapter(this));

final MapWrapperLayout mapWrapperLayout = (MapWrapperLayout) findViewById(R.id.map_relative_layout);
mapWrapperLayout.init(gMap, getPixelsFromDp(this, 39 + 20));

this.infoButtonListener = new OnInfoWindowElemTouchListener(gridview) {
  @Override
  protected void onItemClickConfirmed(Marker marker, AdapterView < ? > parent, View view, int position, long id) {
    System.out.println("test click");

    LatLng pos = marker.getPosition();
    System.out.println("position: " + pos);
    System.out.println("marker: " + marker.toString());
  };

};
gridview.setOnItemClickListener(infoButtonListener);

gMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
  @Override
  public View getInfoWindow(Marker marker) {
    // Setting up the infoWindow with current marker info
    // We must call this to set the current marker and infoWindow references
    // to the MapWrapperLayout
    infoButtonListener.setMarker(marker);
    mapWrapperLayout.setMarkerWithInfoWindow(marker, infoWindow);
    return infoWindow;
  }

  @Override
  public View getInfoContents(Marker marker) {
    return null;

  }
});

//Context menu
gMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() {
  @Override
  public void onMapLongClick(LatLng location) {
    //Create invisible marker and show custom Info Window
    MarkerOptions markerInvisible = new MarkerOptions().title("Start").alpha(0.00 f).infoWindowAnchor(0.5 f, 1);
    markerInvisible.position(location);
    Marker invisibleMarker = gMap.addMarker(markerInvisible);
    invisibleMarker.showInfoWindow();

    contextmenu = true;
  }
});

В настоящий момент это меню отображается поверх фрагмента карты, однако события click не распространяются на onItemClickConfirmed.

введите описание изображения здесь