android - Пикассо не рендерит изображение при первой загрузке фрагмента - PullRequest
1 голос
/ 19 сентября 2019

Я использую библиотеку Picasso для загрузки изображения с URL-адреса, который будет отображаться в маркере кластера карты Google, проблема заключается в первой загрузке фрагмента, изображения которого не отображаются. Я должен перезагрузить фрагмент для отображения изображений.

MapsFragment

private ClusterManager mClusterManager;
private ClusterManagerRenderer mClusterManagerRenderer;
private ArrayList<ClusterMarker> mClusterMarkers = new ArrayList<>();
//....
public void onMapReady(GoogleMap googleMap) {
    if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)  return;

    //....
    mMap = googleMap;


    renderMarkers();
    setGoogleMapStyle();

    //.....
}

private void renderMarkers(){
    //.....
    if (mClusterManager != null && !mClusterMarkers.isEmpty()) {
        mClusterManager.clearItems();
        mClusterMarkers.clear();
    }

    if(mMap != null) {
        if(mClusterManager == null) mClusterManager = new ClusterManager<ClusterMarker>(getActivity().getApplicationContext(), mMap);

        if(mClusterManagerRenderer == null){
            mClusterManagerRenderer = new ClusterManagerRenderer(
                    getContext(),
                    mMap,
                    mClusterManager
            );
            mClusterManager.setRenderer(mClusterManagerRenderer);
        }

        try{
            ClusterMarker newClusterMarker = new ClusterMarker(
                new LatLng((Double) eachImage.get("lat"), (Double) eachImage.get("lng")), // image lat lng
                    (String) eachImage.get("notes"), // marker title
                    (String) eachImage.get("notes"), // marker snippet
                    (String) eachImage.get("image") // image url http://i.imgur.com/DvpvklR.png
            );

            mClusterManager.addItem(newClusterMarker);
            mClusterMarkers.add(newClusterMarker);
        }catch (NullPointerException e){
            Log.e("tag", "addMapMarkers: NullPointerException: " + e.getMessage() );
        }

        mClusterManager.cluster();
    }
    //....
    Log.e("tag", "addMapMarkers: markers are set");
}

ClusterManagerRenderer

public class ClusterManagerRenderer extends DefaultClusterRenderer<ClusterMarker> {
    //....
    @Override
    protected void onBeforeClusterItemRendered(ClusterMarker item, MarkerOptions markerOptions) {
        Picasso.get().load(item.getThumbnail()).into(imageView);
        Bitmap icon = iconGenerator.makeIcon();
        markerOptions.icon(BitmapDescriptorFactory.fromBitmap(icon)).title(item.getTitle());
    }
    //....
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...