Загрузка значков Google Map Pin из URL-адреса через Picasso не работает с первого раза - PullRequest
0 голосов
/ 12 октября 2018

В моем ClusterRenderer я пытаюсь изменить значки значков на карте Google в моем приложении, но мои значки не сохраняются в папке для рисования, но вместо этого я должен загрузить их из URL.Для этого я использую библиотеку Picasso, но проблема в том, что значок не меняется при первой загрузке.Во второй раз все работает нормально.

Вот мой код, в котором я пытаюсь изменить значок:

 public class MyRenderer extends DefaultClusterRenderer<MyClusterItem> {

private Set<Target> targetsProtectedFromGarbageCollection = new HashSet<>();

    @Override
        protected void onBeforeClusterItemRendered(final MyClusterItem item, final MarkerOptions markerOptions) {
            try {


                if(item.getPinUrl()!=null){

                    Target target = new Target() {
                        @Override
                        public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
                            markerOptions.icon(BitmapDescriptorFactory.fromBitmap(iconBitmap));

                            targetsProtectedFromGarbageCollection.remove(this);
                        }

                        @Override
                        public void onBitmapFailed(Drawable errorDrawable) {
                            targetsProtectedFromGarbageCollection.remove(this);
                        }

                        @Override
                        public void onPrepareLoad(Drawable placeHolderDrawable) {

                        }
                    };
                    targetsProtectedFromGarbageCollection.add(target);
                    Picasso.with(mContext).load(item.getPinUrl()).into(target);
                }else{
                    // case when not loading icon from url but get it from drawable folder
                }

            } catch (RuntimeException e) {
                Log.d("MyRenderer", "Could not set: " + item.toString());
            }

            super.onBeforeClusterItemRendered(item, markerOptions);
        }
    }

Я использую set targetsProtectedFromGarbageCollection, чтобы сделать сильную ссылку на Target, потому чтодо того, как у меня возникла проблема с тем, что onBeforeClusterItemRendered вообще не вызывали.Решение найдено здесь .Теперь onBeforeClusterItemRendered вызывается правильно, но значок не меняется.

...