我有一个人卡的回收者清单。每张卡必须具有1张图片和名称(图片1,从json加载)。但对于大多数卡-json中没有相应的图片。当我搜索名称时,相同的照片会分配不同的名称(图2)。 请帮忙,如何解决?
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
CriticResults criticResults = results.get(position);
holder.tvTitle.setText( criticResults.getDisplayName() );
try {
Picasso.get().load( criticResults.getMultimedia().getResource().getSrc() ).into( holder.ivPhoto );
}
catch (Exception o){}
}
答案 0 :(得分:0)
尝试使用if-else
和holder.getAdapterPosition()
:
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
CriticResults criticResults = results.get(holder.getAdapterPosition());
holder.tvTitle.setText( criticResults.getDisplayName() );
if(criticResults.getMultimedia().getResource().getSrc() != null) {
Picasso.get().load(criticResults.getMultimedia().getResource().getSrc()).into(holder.ivPhoto);
} else {
Picasso.get().load(/*Your default pic*/).into(holder.ivPhoto);
}
}
答案 1 :(得分:0)
您尚未向我们展示您的视图持有者对象,但我想您的问题是,当没有要显示的图片时,您没有覆盖ImageView
内容,因此显示了最后加载的图片。
您应该执行以下操作:
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
CriticResults criticResults = results.get(position);
holder.tvTitle.setText( criticResults.getDisplayName());
if (criticResults.getMultimedia().getResource().getSrc() != null) {
Picasso.get().load(criticResults.getMultimedia().getResource().getSrc())
.error(R.drawable.user_placeholder_error)
.into(holder.ivPhoto)
} else {
holder.ivPhoto.setDrawable(R.drawable.user_placeholder_error);
}
}
有可能仅与error()
上的Picasso
调用一起使用。
答案 2 :(得分:0)
谢谢您的帮助!它已经起作用了(如果不起作用,则会出现错误“ null refference”):
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
CriticResults criticResults = critics.get(position);
holder.tvTitle.setText( criticResults.getDisplayName() );
try {
Picasso.get().load( criticResults.getMultimedia().getResource().getSrc() ).into( holder.ivPhoto );
}
catch (Exception o){
Picasso.get().load(R.drawable.noimage).into(holder.ivPhoto);
}
}