Android查询ListView图像加载

3

以下是我的listview适配器代码,除了图片不能从URL加载之外,其他都正常。可能是什么问题?我正在使用Android Query库来加载图像。

  public Onadapter(Context context,String[] id,String[] label,String[] title,String[] image,String[] hrs,String[] posted_date)
    {
        this.context=context;
        this.id = id;
        this.label = label;
        this.title = title;
        this.image = image;
        this.hrs = hrs;
        this.posted_date=posted_date;


    }

    private class ViewHolder{
        ImageView img;
        TextView id;
        TextView label;
        TextView title;
        TextView hrs;
        TextView posted_date;

    }
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;

        LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.whatslist, null);
            holder = new ViewHolder();
            holder.id=(TextView) convertView.findViewById(R.id.whats_id);
            holder.img = (ImageView) convertView.findViewById(R.id.thumb1);
            holder.label= (TextView) convertView.findViewById(R.id.label);
            holder.title = (TextView) convertView.findViewById(R.id.artist_e_desc);
            holder.hrs = (TextView) convertView.findViewById(R.id.hrs);
            holder.posted_date = (TextView) convertView.findViewById(R.id.date);

            convertView.setTag(holder);
        }
        else {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.id.setText(id[position]);
        holder.label.setText(label[position]);
        holder.title.setText(title[position]);
        holder.hrs.setText(hrs[position]);
        holder.posted_date.setText(posted_date[position]);
        imgaq = new AQuery(convertView);
        imgaq.id(holder.img).image(image[position], true, true, 0, 0, null, AQuery.FADE_IN_NETWORK, 1.0f);
        return convertView;
    }


    @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return image.length;
        }


        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }


        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return null;
        }




}
3个回答

5
也许你最好使用recycle()方法。
我认为在getView()方法中每次创建新对象不是一个好的方式。
AQuery listAq = new AQuery(this);

public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder = null;

    LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.whatslist, null);
        holder = new ViewHolder();
        holder.id=(TextView) convertView.findViewById(R.id.whats_id);
        holder.img = (ImageView) convertView.findViewById(R.id.thumb1);
        holder.label= (TextView) convertView.findViewById(R.id.label);
        holder.title = (TextView) convertView.findViewById(R.id.artist_e_desc);
        holder.hrs = (TextView) convertView.findViewById(R.id.hrs);
        holder.posted_date = (TextView) convertView.findViewById(R.id.date);

        convertView.setTag(holder);
    }
    else {
        holder = (ViewHolder) convertView.getTag();
    }

    holder.id.setText(id[position]);
    holder.label.setText(label[position]);
    holder.title.setText(title[position]);
    holder.hrs.setText(hrs[position]);
    holder.posted_date.setText(posted_date[position]);

    AQuery imgaq = listAq.recycle(convertView);
    imgaq.id(holder.img).image(image[position], true, true, 0, 0, null, AQuery.FADE_IN_NETWORK, 1.0f);
    return convertView;
}

0
我会写下这行代码:
imgaq = new AQuery(convertView);

在适配器的构造函数中,将上下文传递给AQuery构造函数,而不是视图。特别是convertView有时为空,因此您正在使用null初始化AQuery。
  public Onadapter(Context context,String[] id,String[] label,String[] title,String[] image,String[] hrs,String[] posted_date)
{
    this.context=context;
    this.id = id;
    this.label = label;
    this.title = title;
    this.image = image;
    this.hrs = hrs;
    this.posted_date=posted_date;

    this.aq = new AQuery(context);

}

确保传递给Aquety的URL正确。也许尝试较短的版本:aq.id(tileViewHolder.ivImage).image(url,true,true); - Malachiasz
我已经为我的ViewPager使用了AQuery自定义PagerAdapter来获取具有相同URL的图像,它运行良好!我认为URL没有问题。 - Niraj Adhikari

0
原来我错误地引用了ImageView的XML资源。我真是太傻了:D

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接