Проблема в том, что MapView, инициализированный в пользовательском адаптере, не загружается, пока вы не нажмете на него.
Как уже упоминалось здесь: Android MapView не загружается, пока вы нажимаете на вид карты
вы можете решить проблему, переопределив onResume().
Я попробовал это следующим образом:
Код: Выделить всё
@Override
public void onResume() {
if(LocationsAdapter.ViewHolder.mapView != null) {
LocationsAdapter.ViewHolder.mapView.onResume();
}
super.onResume();
}
Я сделал MapView как общедоступный статический объект внутри ViewHolder, созданный в LocationsAdapter. Кажется, это не работает, карта по-прежнему пуста.
ViewHolder внутри адаптера реализует OnMapReadyCallback.
Код: Выделить всё
public static class ViewHolder extends RecyclerView.ViewHolder implements OnMapReadyCallback
...
@Override
public void onMapReady(GoogleMap googleMap) {
this.googleMap = googleMap;
Location location = locations.get(getAdapterPosition());
this.googleMap.addMarker(new MarkerOptions().position(location.getLatlng()).title(location.getName()));
this.googleMap.moveCamera(CameraUpdateFactory.newLatLng(location.getLatlng()));
this.googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(location.getLatlng(), 7.0f));
}
Код: Выделить всё
mapView.onCreate(null);
mapView.getMapAsync(this);
Моя цель то есть загрузить карту независимо от того, в каком жизненном цикле в данный момент находится фрагмент.
Я предполагаю, что для этой проблемы вам не понадобятся ни адаптер, ни фрагмент, ни XML. Если да, дайте мне знать, пожалуйста.
Подробнее здесь: https://stackoverflow.com/questions/519 ... iewadapter
Мобильная версия