【问题标题】:Custom listview adapter, setImageBitmap does not load the bitmap自定义listview适配器,setImageBitmap不加载位图
【发布时间】:2011-04-03 17:08:16
【问题描述】:

我为 Item (Item is my entity class) 的 listView(myRSSTitleListAdapter) 扩展 ArrayAdapter 创建了自己的适配器。我像这样覆盖了 getView 方法:

public View getView(int position, View converView, ViewGroup parent) {
  View view = converView;
  if(view == null) {
    LayoutInflater li =(LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
    view = li.inflate(layout, null);
  }

  final Item listItem = items[position];

  if(listItem != null) {
    ImageView image = (ImageView)view.findViewById(R.id.image);
    image.setImageBitmap(ImageTool.loadImage(listItem.getImageURL()));

    HTMLUtilities htmlTool = HTMLUtilities.getInstance();
    TextView title = (TextView)view.findViewById(R.id.label);
    title.setText(htmlTool.escapeHTML(listItem.getTitle()));
  }

  return view;
}

ImageTool 是我编写的一个类,loadImage 从传递给它的 url 返回一个位图。 我在我的 ListActivity 中调用 myRSSTitleListAdapter,如下所示:

setListAdapter(new myRSSTitleListAdapter(this, R.layout.rss_items, items));

items 是一个 Item 数组。

rss_items 是一个带有 imageView 和 textView 的线性布局。

对于 textView 一切都很好,setText 对我返回的视图有影响,但图像没有出现(我确定位图在这里)

谢谢

【问题讨论】:

    标签: android listview bitmap


    【解决方案1】:

    我认为问题出在loadImage,因为您的代码看起来不错。

    应该发生两件事之一:

    1. 如果loadImage 有效,则行中的文本应该需要很长时间才能显示,因为getView 直到loadImage 才会返回。
    2. 如果loadImage 出现错误或正在异步执行工作,则getView 将立即返回并仅设置您的文本,这就是您所描述的行为。

    将图像异步加载到ImageView 比它应该做的要复杂得多。如果你不能让它工作,你可以试试DroidFuWebImageView

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-09
      • 1970-01-01
      • 1970-01-01
      • 2014-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多