gpt4 book ai didi

android - Volley - NetworkImageView 有时不显示错误图像?

转载 作者:太空宇宙 更新时间:2023-11-03 12:57:49 26 4
gpt4 key购买 nike

所以我决定试用新的 Volley libraryGoogle IO 2013 所示.

我尝试过使用 NetworkImageView 的简单解决方案在 GridView 上显示多个图像。

它运行良好并显示图像,但如果我让它下载图像然后在下载过程中关闭 WiFi,它不会显示错误,就好像所有内容仍在加载一样。不仅如此,如果我恢复连接,它也不会恢复加载。

为什么会发生,我该如何解决?也许这实际上是一个错误?

这是我的示例代码,如果有人想尝试一下(BitmapCacheLru 代码 here ):

public class MainActivity extends Activity {
private static final int COLUMNS_COUNT = 4;
private RequestQueue _requestQueue;
private ImageLoader _imageLoader;

@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

_requestQueue=Volley.newRequestQueue(this);
_imageLoader=new ImageLoader(_requestQueue, new BitmapLruCache());

final GridView gridView = new GridView(this);
gridView.setNumColumns(COLUMNS_COUNT);
final int screenWidth = getResources().getDisplayMetrics().widthPixels;

gridView.setAdapter(new BaseAdapter() {
@Override
public View getView(final int position, final View convertView, final ViewGroup parent) {
NetworkImageView rootView = (NetworkImageView) convertView;

if (rootView == null) {
rootView = new NetworkImageView(MainActivity.this);
rootView.setLayoutParams(new AbsListView.LayoutParams(screenWidth / COLUMNS_COUNT, screenWidth / COLUMNS_COUNT));
rootView.setScaleType(ScaleType.CENTER_CROP);
rootView.setDefaultImageResId(android.R.drawable.sym_def_app_icon);
rootView.setErrorImageResId(android.R.drawable.ic_dialog_alert);
}

final String url = getItem(position);
rootView.setImageUrl(url, _imageLoader);
return rootView;
}

@Override
public long getItemId(final int position) {
return 0;
}

@Override
public String getItem(final int position) {
return Images.imageThumbUrls[position];
}

@Override
public int getCount() {
return Images.imageThumbUrls.length;
}
});

setContentView(gridView);
}

@Override
protected void onStop() {
_requestQueue.cancelAll(this);
super.onStop();
}
}

附言如果你想看NetworkImageView的代码,我觉得可以here .

最佳答案

我认为问题在于 volley 无法帮助您重新加载图像。

快速检查显示 NetworkImageView 仅在调用 onLayout 方法时加载数据,方法 loadImageIfNecessary 将在必要时对网络请求进行排队。

当没有互联网连接时,将调用错误回调,一旦互联网自行连接,将不会有进一步的操作。

但是,由于您在列表中有 NetworkImage,当您滚动列表时,我想您将重用单元格 View 并再次调用 setImageURL。如果 Internet 连接可用,图像将自动加载。或者,一旦 Internet 连接启动,您可以刷新 ListView ,以便自动加载图像。

关于android - Volley - NetworkImageView 有时不显示错误图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16875357/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com