У меня есть фрагмент диалога, который открывается через InfoWindowClickListener в картах Google. Мне нужен уникальный фрагмент диалога для каждого маркера на карте. Фрагменты диалога создаются следующим образом, для каждого места, в цикле последовательно:
public PlaceMarker(Place place) {
this.place = place;
this.marker = map.addMarker(new MarkerOptions()
.position(place.getLocation())
.title(this.place.getName())
.snippet(place.getInfo()));
mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
FragmentManager manager = getFragmentManager();
//restdialog = RestaurantDialog.newInstance(place);
RestaurantDialog restdialog = new RestaurantDialog();
Bundle args = new Bundle();
args.putSerializable("place", place);
restdialog.setArguments(args);
restdialog.setTargetFragment(DefaultMap.this, 0);
restdialog.show(manager, place.getName());
}
});
}
Проблема, с которой я сталкиваюсь, заключается в том, что, хотя окна с информацией о маркерах выглядят именно так, как я ожидаю (каждое место имеет свои собственные данные над ним), фрагмент диалога для каждого щелчка маркера отображается как самый последний созданный фрагмент диалога (позвольте мне знать, если это не имеет смысла). То есть, если я создам метку места для следующих мест в следующем порядке: Балтимор, Филадельфия, Вашингтон, округ Колумбия, информационные окна для Балтимора, Филадельфии и Вашингтона, округ Колумбия, будут иметь правильное информационное окно для каждого места, когда вы нажимаете на их маркеры, но при нажатии на информационное окно вы увидите только фрагмент диалога для Вашингтона, округ Колумбия, для всех 3 мест.
РЕДАКТИРОВАТЬ: я добавляю места из цикла for через этот фрагмент кода, который занимает место и создает новый ресторанный маркер для каждого места:
public void addPlace(Place place) {
this.places.add(place); //this.places is a List<Place>
this.markerBank.put(place, new PlaceMarker(place)); //this.markerBank is a HashMap <Place, PlaceMarker>
}