自定义listview适配器,setImageBitmap不加载位图

时间:2011-04-03 17:08:16

标签: android listview bitmap

我为ListView(myRSSTitleListAdapter)扩展了ArrayAdapter(Item是我的实体类)创建了自己的适配器。我像这样覆盖了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对我返回的视图有影响,但图像没有出现(我确信位图在这里)

谢谢

1 个答案:

答案 0 :(得分:0)

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

应该发生以下两件事之一:

  1. 如果loadImage有效,则您的行中的文字应该花费很长时间才会显示,因为getViewloadImage之前不会返回。
  2. 如果loadImage出现错误或异步工作,则getView会立即返回,只会设置您的文字,这就是您所描述的行为。
  3. 将图像异步加载到ImageView比应该更加复杂。如果你无法让它工作,你可以尝试DroidFuWebImageView