【发布时间】:2014-07-03 18:47:45
【问题描述】:
我有一个显示帖子列表的片段。列表的项目是自定义的,并且有一个 ImageView,我可以在其中放置从 Internet 下载的图像(通过 URL)。
问题是图片下载到错误的项目(有时在两个或多个项目中重复)。
package com.shoozy.app.utils;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.shoozy.app.R;
import com.shoozy.app.data.Post;
import java.util.ArrayList;
public class PostAdapter extends BaseAdapter {
private LayoutInflater layoutInflater;
ArrayList posts;
public PostAdapter(Context context, ArrayList objects) {
//super(context, textViewResourceId, objects);
layoutInflater = LayoutInflater.from(context);
this.posts = objects;
}
@Override
public int getCount() {
return posts.size();
}
@Override
public Object getItem(int position) {
return posts.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.item_list_gallery, null);
holder = new ViewHolder();
holder.postIV = (ImageView) convertView.findViewById(R.id.iv_post);
holder.userImageIv = (ImageView) convertView.findViewById(R.id.iv_user_post_gallery);
holder.shopTV = (TextView) convertView.findViewById(R.id.tv_shop);
holder.priceTV = (TextView) convertView.findViewById(R.id.tv_price);
holder.usernameTV = (TextView) convertView.findViewById(R.id.tv_username);
holder.numberLikesTV = (TextView) convertView.findViewById(R.id.tv_number_like);
holder.numberCommentsTV = (TextView) convertView.findViewById(R.id.tv_number_comments);
convertView.setTag(holder); // TODO: scoprire che cazzo vuol dire
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.userImageIv.setTag(position);
holder.postIV.setTag(position);
Post p = (Post) posts.get(position);
holder.shopTV.setText(p.getShopName());
// TODO: aggiungere la valuta
holder.priceTV.setText(p.getPrice() + " €");
holder.usernameTV.setText(p.getUser().getUsername());
holder.numberLikesTV.setText(p.getLikesCount() + "");
holder.numberCommentsTV.setText(p.getCommentCount() + "");
if (holder.postIV != null) {
new ImageDownloaderTask(holder.postIV).execute(p.getImageUrl());
}
if (holder.userImageIv != null) {
// TODO: per l'immagine dell'utente vedere
//new ImageDownloaderTask(holder.userImageIv).execute(p.getUser().getImageUrl());
}
return convertView;
}
static class ViewHolder {
TextView shopTV;
TextView priceTV;
TextView usernameTV;
TextView numberLikesTV;
TextView numberCommentsTV;
ImageView postIV;
ImageView userImageIv;
}
}
【问题讨论】:
标签: android android-fragments android-listview imageview adapter