使用picasso的第一个项目上的Android ListView错误

时间:2016-11-18 13:55:03

标签: android listview adapter picasso

Ι有一个ListView适配器可以加载篮球队的比赛。我正在用毕加索或资源加载我的图像,如果它是该应用程序的团队。在我的第一个项目上,它似乎从网络上加载了两个团队的图像。这是一个示例代码和图像。

get

查看标有红色的第一项:

enter image description here

3 个答案:

答案 0 :(得分:1)

我注意到你的代码中的错误

 Holder holder=null;
if(view==null)
{
    view = LayoutInflater.from(context).inflate(layoutResource, parent, false);
    holder = new Holder(view, position);
    view.setTag(holder);
}
else{
     holder=(Holder)view.getTag();
    }
//Continue your code here

答案 1 :(得分:1)

您可以像这样实现ViewHolder,

static class ViewHolder {
    ImageView ourTeamLogo, foeLogo;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View view = convertView;
    final ViewHolder holder;
    if (convertView == null) {
        view = LayoutInflater.from(context).inflate(layoutResource, parent, false);
        holder = new ViewHolder();
        holder.ourTeamLogo = (ImageView) view.findViewById(R.id.program_item_our_team_logo);
        holder.foeLogo = (ImageView) view.findViewById(R.id.program_item_foe_logo);
        view.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    Match programItem = getItem(position);

    if (programItem.isHome()) {

        holder.ourTeamLogo.setImageResource(R.drawable.our_team_logo);

        Picasso.with(getContext())
                .load(programItem.getFoeLogoURL())
                .fit().placeholder(R.drawable.placeholder_team).into(holder.foeLogo);
    } else {

        holder.foeLogo.setImageResource(R.drawable.our_team_logo);

        Picasso.with(getContext())
                .load(programItem.getFoeLogoURL())
                .fit().placeholder(R.drawable.placeholder_team).into(holder.ourTeamLogo);
    }

    return view;
}

答案 2 :(得分:0)

找到解决方案,好像我需要添加

Picasso.with(上下文).cancelRequest(holder.ourTeamLogo); Picasso.with(上下文).cancelRequest(holder.foeTeamLogo);

    static class ViewHolder {
ImageView ourTeamLogo, foeLogo;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    View view = convertView;
    final ViewHolder holder;
    if (convertView == null) {
    view = LayoutInflater.from(context).inflate(layoutResource, parent, false);
    holder = new ViewHolder();
    holder.ourTeamLogo = (ImageView) view.findViewById(R.id.program_item_our_team_logo);
    holder.foeLogo = (ImageView) view.findViewById(R.id.program_item_foe_logo);
} else {
    holder = (ViewHolder) convertView.getTag();
}

Match programItem = getItem(position);

if (programItem.isHome()) {

    holder.ourTeamLogo.setImageResource(R.drawable.our_team_logo);

    Picasso.with(context).
                cancelRequest(holder.ourTeamLogo);
    Picasso.with(getContext())
            .load(programItem.getFoeLogoURL())
            .fit().placeholder(R.drawable.placeholder_team).into(holder.foeLogo);
} else {

    holder.foeLogo.setImageResource(R.drawable.our_team_logo);
    Picasso.with(context).
                cancelRequest(holder.ourTeamLogo);
    Picasso.with(getContext())
            .load(programItem.getFoeLogoURL())
            .fit().placeholder(R.drawable.placeholder_team).into(holder.ourTeamLogo);
}

return view;

}