3

Ive included my listview adapter's code below all works fine except the image isnt loaded from the url. What might be the case. I'm using the Android Query library for loading images.

  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;
        }




}
Niraj Adhikari
  • 1,560
  • 2
  • 12
  • 28

3 Answers3

5

Maybe you'd better using recycle()

I think it's not good way new everytime in getView() method.

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;
}
Daeyeol Ryu
  • 76
  • 1
  • 2
0

I would write this line:

imgaq = new AQuery(convertView);

in the constructor of the adapter and pass context to AQuery constructor instead of the view. Especially that convertView sometimes is null so you are initializing AQuery with null

  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);

}
Malachiasz
  • 6,621
  • 2
  • 31
  • 46
  • make sure that url passed to Aquety is proper. maybe try shorter version: aq.id(tileViewHolder.ivImage).image(url, true, true); – Malachiasz Aug 01 '13 at 11:14
  • ive used aquery for my custom pageradapter for my viewpager to get images with the same url it works fine! i dont think there is problem with the url. – Niraj Adhikari Aug 01 '13 at 11:17
0

Turns out i was incorrectly referencing the xml resource for imageview.Silly me :D

Niraj Adhikari
  • 1,560
  • 2
  • 12
  • 28