首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NetworkImageView与InfoWindowAdapter

NetworkImageView与InfoWindowAdapter
EN

Stack Overflow用户
提问于 2013-09-19 16:57:42
回答 2查看 988关注 0票数 3

我很难在Google的NetworkImageView中使用Volley的InfoWindow

我的标记显示了一个InfoWindow,上面有一个从互联网上获取的图像。正如您所知道的,这样做的唯一方法是显示InfoWindow并在下载完图像后刷新它。

所以我需要一种方法来知道NetworkImageView什么时候下载完图像,这样我就可以刷新这个视图。

我在找像onLoadComplete这样的东西

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2013-10-19 21:49:57

修改NetworkImageView

代码语言:javascript
复制
public void setImageUrl(String url, ImageLoader imageLoader, ImageListener myListener) {
        mUrl = url;
        mImageLoader = imageLoader;
        // The URL has potentially changed. See if we need to load it.
        loadImageIfNecessary(false, myListener);
}

/** @param myListener notified when image has loaded or on error */
private void loadImageIfNecessary(final boolean isInLayoutPass, final ImageListener myListener) {
...
ImageContainer newContainer = mImageLoader.get(mUrl,
                new ImageListener() {
                 @Override
                    public void onErrorResponse(VolleyError error) {
                        if (myListener != null) {
                            myListener.onErrorResponse(error);
                        }
                        if (mErrorImageId != 0) {
                            setImageResource(mErrorImageId);
                        }
                    }
                ... 
                @Override
                    public void onResponse(final ImageContainer response, boolean isImmediate) {
                    ...
                     if (response.getBitmap() != null) {
                            if (myListener != null) {
                                myListener.onResponse(response, false); // pay attention to boolean isImmediate param
                            }
                            setImageBitmap(response.getBitmap());
                            ...
                    }
                }
            }
            ...

现在,您可以在Adapter或任何其他代码中使用它:

代码语言:javascript
复制
public void bind(Item item) {
    imageView.setImageUrl(imageUrl, app.getImageLoader(), new ImageListener() {
        @Override
        public void onResponse(ImageContainer response, boolean isImmediate) {
            // isImmediate == true - taken from cache
            // isImmediate == false - successfully loaded from server
        }

        @Override
        public void onErrorResponse(VolleyError error) { }
    });
}
票数 3
EN

Stack Overflow用户

发布于 2014-01-28 18:37:57

我按照oleksandr_yefremow的建议创建了一个自定义的NetworkImageView,并使其工作,尽管缓存由于某种原因无法工作。

代码语言:javascript
复制
public View getInfoWindow(final Marker marker) {

final CustomImageView imageView = ...
imageView.setImageUrl(imageUrl, app.getImageLoader(), new ImageListener() {
    @Override
    public void onResponse(ImageContainer response, boolean isImmediate) {
        imageView.setImageBitmap(response.getBitmap());
        marker.showInfoWindow();
        // isImmediate == true - taken from cache
        // isImmediate == false - successfully loaded from server
    }

    @Override
    public void onErrorResponse(VolleyError error) { }
});

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18900749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档