Maps-Markierungspunktbild mit Picasso wird beim ersten Mal nicht geladen

Ich implementiere Android Mapview mit benutzerdefiniertem Marker. Ich verwende Picasso, um das Bild in die Markierungsansicht zu laden. Und wenn ich die App zum ersten Mal starte, werden mir alle Markierungen angezeigt, aber nur eine Markierung, die mit Picasso aus der Datenbank geladen wurde, die anderen Markierungen werden nicht aus der Datenbank geladen, sondern nur die Standardmarkierungsnadel für Karten. Wenn ich jedoch zur vorherigen Aktivität gehe und zu MapsActivity zurückkehre, werden alle Markierungen angezeigt, die mit picasso aus der Datenbank geladen wurden.

Hier ist meine PicassoMarker Klasse

public class PicassoMarker implements Target {
Marker mMarker;

    PicassoMarker(Marker marker) {
        mMarker = marker;
    }

    @Override
    public int hashCode() {
        return mMarker.hashCode();
    }

    @Override
    public boolean equals(Object o) {
        if(o instanceof PicassoMarker) {
            Marker marker = ((PicassoMarker) o).mMarker;
            return mMarker.equals(marker);
        } else {
            return false;
        }
    }

    @Override
    public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
        mMarker.setIcon(BitmapDescriptorFactory.fromBitmap(bitmap));
    }

    @Override
    public void onBitmapFailed(Drawable errorDrawable) {
    }

    @Override
    public void onPrepareLoad(Drawable placeHolderDrawable) {
        //mMarker.setIcon(BitmapDescriptorFactory.fromResource(R.mipmap.here));
    }
}

Hier ist die Methode in MapsActivity

public void plotMarkers(ArrayList<MyMarker> markers) {
    if(markers.size() > 0) {
        for (MyMarker myMarker : markers)
        {
            markerOption = new MarkerOptions().position(new LatLng(myMarker.getmLatitude(), myMarker.getmLongitude()));
            location_marker = mMap.addMarker(markerOption);
            target = new PicassoMarker(location_marker);
            Picasso.with(MapsActivity.this).load(myMarker.getmIcon()).resize(84, 125).into(target);
            mMarkersHashMap.put(location_marker, myMarker);

            i = getIntent();
            if(i.getBooleanExtra("maps", true)) {
                buttonNavigasi.setVisibility(View.VISIBLE);

                location_marker.setTitle(i.getStringExtra("nama"));
                dest = new LatLng(myMarker.getmLatitude(), myMarker.getmLongitude());
                mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(dest, 16));
            }
            else {
                mMap.setInfoWindowAdapter(new MarkerInfoWindowAdapter());
            }
        }
    }
}

Was läuft hier falsch?

Vielen Dank

Antworten auf die Frage(2)

Ihre Antwort auf die Frage