我使用所有类来通过Url创建图像。
ImageView imV= ((ImageView) view.findViewById(R.id.badge));
// Image url
String image_url = "http://maps.gstatic.com/mapfiles/place_api/icons/cafe-71.png";
final int stub_id = R.drawable.ic_action_search;
// ImageLoader class instance
ImageLoader imgLoader = new ImageLoader(getApplicationContext());
// whenever you want to load an image from url
// call DisplayImage function
// url - image url to load
// loader - loader image, will be displayed before getting image
// image - ImageView
imgLoader.DisplayImage(image_url,stub_id ,imV);
但它显示的是默认图片,而不是Url下载的图片。
我正在使用infowindowAdapter类的goolge,它说我不会在数据和数据时改变图像。图像被加载到窗口中,这就是为什么它显示第一个默认图像.....并且以后不再改变
还有其他方法吗? 提前谢谢
答案 0 :(得分:6)
我遇到了同样的问题。 我用asyncTask解决了它。
像这样的东西
private Drawable _infoImageDrawable;
public class MyMapActivity extends MenuActivity
{
.....code code code....
protected void handleMarkerClicked(final Marker marker, final String url) {
new AsyncTask<Void, Void, Void>()
{
@Override
protected void onPreExecute()
{
super.onPreExecute();
_infoImageDrawable = null;
}
@Override
protected Void doInBackground(Void... params)
{
InputStream is;
try {
is = (InputStream) new URL(url).getContent();
_infoImageDrawable = Drawable.createFromStream(is, "");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result)
{
super.onPostExecute(result);
marker.showInfoWindow();
}
}.execute();
}
}
然后我只是将InfoWindowAdapter中的drawable设置为null(删除旧图像)和_imageInfoDrawable秒。 它有效 - 但我想要一个更好的解决方案。