Search code examples
androidpicassohorizontallist

Horizontal Listview Loading same images from URL (Using Picasso)


I've this code snipped. Its a horizontal list view. Problem is that same images are being loaded instead of different ones. What can be the issue? I don't think picasso is the issue over here. I guess its something else.

 @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
//      View timeLineRow = LayoutInflater.from(parent.getContext()).inflate(R.layout.dashboardtimelinerow, null);
        if (convertView == null) {
            LayoutInflater mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = mInflater.inflate(R.layout.toprecommendationsitem, parent, false);

            holder = new ViewHolder();
            holder.recommimage = (ImageView) convertView.findViewById(R.id.recommimage);
            holder.userImage = (CircularImageView) convertView.findViewById(R.id.userImage);

            convertView.setTag(holder);
        } else
            holder = (ViewHolder) convertView.getTag();
        int i=0;
        for(i=0; i<mArrayListData.size(); i++) {
            if (!mArrayListData.get(i).getDishimageurl().isEmpty()) {
                Picasso.with(mContext)
                        .load(mArrayListData.get(i).getDishimageurl())
                        .resize(172, 172)

                        .into(holder.recommimage);
                break;

            }
        }

        return convertView;
    }

Solution

  • You aren't using the value of position anywhere inside your getView function. getView is supposed to return the view for whichever piece of data lies at index position in the array or list you passed in. You'll want to replace your code with something like

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
    
        if (convertView == null) {
            LayoutInflater mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = mInflater.inflate(R.layout.toprecommendationsitem, parent, false);
    
            holder = new ViewHolder();
            holder.recommimage = (ImageView) convertView.findViewById(R.id.recommimage);
            holder.userImage = (CircularImageView) convertView.findViewById(R.id.userImage);
    
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
    
        if (!mArrayListData.get(position).getDishimageurl().isEmpty()) {
            Picasso.with(mContext)
                     .load(mArrayListData.get(position).getDishimageurl())
                     .resize(172, 172)
                     .into(holder.recommimage);
        }
    
        return convertView;
    }