我正在努力缓存listview的图像。 我使用了here
的解决方案我遇到的问题是 - 如果图标不存在,如何设置默认图像?
图像的URL返回服务器页面,表明服务器上不存在该图像。所以我猜这个html页面然后以某种方式转换为错误的Drawable - >这样就不会发生IOexception(因为返回了一些数据)。
我可以测试" drawable"作为一个合适的偶像?。
或者我的逻辑可能在这里是假的。请指教
ListViewAdapter中的代码:
try {
URL url = new URL("http:// some image url here.jpg");
URLConnection connection = url.openConnection();
connection.setUseCaches(true);
Drawable drawable = Drawable.createFromStream(connection.getInputStream(), "src");
viewHolder.icon.setImageDrawable(drawable);
} catch (IOException e) {
viewHolder.icon.setImageResource(R.drawable.defaulticon);
}
答案 0 :(得分:0)
如果无法从流中解码,则drawable
变量将为null
。检查null
并设置默认图片。
Drawable drawable = null;
try {
URL url = new URL("http:// some image url here.jpg");
URLConnection connection = url.openConnection();
connection.setUseCaches(true);
// try to load and decode
drawable = Drawable.createFromStream(connection.getInputStream(), "src");
if(drawable != null) // if succeed - set drawable
viewHolder.icon.setImageDrawable(drawable);
} catch (IOException e) {
// ignore IOException if any...
} finally {
if(drawable == null) // If drawable are null (not decoded or failed to load (404?))
viewHolder.icon.setImageResource(R.drawable.defaulticon); // set default image
}