浜松のWEBシステム開発・スマートフォンアプリ開発・RTK-GNSS関連の開発はお任せください
株式会社シーポイントラボ
TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:静岡県浜松市中区富塚町1933-1 佐鳴湖パークタウンサウス2F

【android・picasso】picassoのコールバック処理について

前回これすごくいいと騒いでいたpicassoの件です。

 

設定したマーカーをタップしてpicassoで読み込んだ画像を

表示するまでが期待値だったのですが、

一エリアのマーカーの一回目のタップに必ず

プレースホルダーが表示される現象がおきました。

 

こちらの原因は、picasso自体参照が弱いため。intoに入れる素材が

imageViewだけだとpicassoが画像を取れなくても

読み込んだ行為=画像を読み込んだと誤認識

してしまうため、デフォルトのプレースホルダーの

画像を表示してしまうみたいです。

正しく使うためには、picassoのコールバックを使う必要があります。

前回書いたコードにinto(ImageView, Callback)を追加します。

 

</pre>
//吹き出しカスタマイズ
mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
@Override
public View getInfoWindow(Marker marker) {
return null;
}
@Override
public View getInfoContents(Marker marker) {
// 今回はこちらに処理を記述
View view = getLayoutInflater().inflate(R.layout.info_window, null);
// タイトル設定
TextView title = (TextView)view.findViewById(R.id.info_title);
title.setText(marker.getTitle());
ImageView imageView = (ImageView) view.findViewById(R.id.info_image);
Picasso.with(ReportActivity.this)
.load(marker.getSnippet())
.placeholder(R.drawable.sandclock)
.resize(200,200)
.into(imageView,new MarkerCallback(marker,marker.getSnippet(),imageView));

return view;
}
});
<pre>

 

ここまでは前回と一緒です。続いてコールバックの実装。

 

</pre>
public class MarkerCallback implements Callback {
Marker marker = null;
String URL;
ImageView userPhoto;

MarkerCallback(Marker marker, String URL, ImageView userPhoto) {
this.marker = marker;
this.URL = URL;
this.userPhoto = userPhoto;
}

@Override
public void onError() {
//Log.e(getClass().getSimpleName(), "Error loading thumbnail!");
}

@Override
public void onSuccess() {
if (marker != null && marker.isInfoWindowShown()) {
marker.hideInfoWindow();

Picasso.with(ReportActivity.this)
.load(URL)
.into(userPhoto);

marker.showInfoWindow();
}
}
}
<pre>

picassoが読み込みに成功したら必ずコールバックで値の更新を

行います。

ここではmarker、URL、userPhoto再度onSuccessで

picassoに渡して更新しています。

 

これでプレースホルダーが呼ばれることなく読み込んだ画像を

ちゃんと表示してくれるようになりました。

 

調べてみるとstackoverflowにも似たような記事がありました。

https://stackoverflow.com/questions/32725753/picasso-image-loading-issue-in-googlemap-infowindowadapter/40045697#40045697

 

qiitaにも

https://qiita.com/Nkzn/items/a285196a88a21b80b9bf

 

リファレンスを飛ばしてしまいがちだったのでそのしっぺ返しが

きてしまった感じですね。

 

  • この記事いいね! (0)