MapView im benutzerdefinierten RecyclerViewAdapterAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 MapView im benutzerdefinierten RecyclerViewAdapter

Post by Anonymous »

Ich versuche, eine RecyclerView zu implementieren, die CardViews mit jeweils einer MapView darin enthält.
Das Problem besteht darin, dass das im benutzerdefinierten Adapter initialisierte MapView nicht geladen wird, es sei denn, Sie klicken darauf.
Wie hier bereits erwähnt: Android MapView wird nicht geladen, es sei denn Sie berühren die Kartenansicht
Sie können das Problem lösen, indem Sie onResume() überschreiben.
Ich habe dies auf folgende Weise versucht:

Code: Select all

@Override
public void onResume() {
if(LocationsAdapter.ViewHolder.mapView != null) {
LocationsAdapter.ViewHolder.mapView.onResume();
}

super.onResume();
}
Ehrlich gesagt hatte ich einfach keine Ahnung, wie ich onResume auf andere Weise überschreiben kann. Bitte verzeihen Sie mir, wenn ich hier gegen bestimmte Programmierregeln verstoßen habe.
Ich habe das gemacht mapView als öffentliche statische Datei innerhalb des im LocationsAdapter erstellten ViewHolder. Dies scheint nicht zu funktionieren, die Karte ist immer noch leer.

Der ViewHolder im Adapter implementiert OnMapReadyCallback.

Code: Select all

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));
}
Diese beiden Methoden werden aufgerufen, wenn der ViewHolder aufgerufen wird.

Code: Select all

mapView.onCreate(null);
mapView.getMapAsync(this);
Ein weiterer Artikel zu diesem Problem ist noch unbeantwortet: MapView in Cardview lädt die Karte nicht.

Mein Ziel Das heißt, die Karte zu laden, unabhängig davon, in welchem ​​Lebenszyklus sich das Fragment gerade befindet.
Ich gehe davon aus, dass Sie für dieses Problem weder den Adapter, das Fragment noch das XML benötigen. Wenn ja, lassen Sie es mich bitte wissen.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post