我可以测试从Url Stream中获取的“drawable”作为正确的图标吗?

时间:2012-02-10 10:36:41

标签: android caching android-listview

我正在努力缓存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);
            }

1 个答案:

答案 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
}