Glide乱入RecyclerView的条件句
Glide is messed in the conditional sentence of RecyclerView
当我尝试判断urlFromNet
是否为Null时,图片在RecyclerView中不会按postlist
排序,会很乱
@Override
public void onBindViewHolder(@NonNull PostlistViewHolder holder, final int i) {
final Post post = postlist.get(i);
String urlFromNet=post.getPictureUrl();
// fine
// holder.img.setTag(R.id.imageid, post.getPostId());
// if(holder.img.getTag(R.id.imageid).equals(post.getPostId())){
// Glide.with(holder.img)
// .load(url)
// .placeholder(R.drawable.ic_launcher_background)
// .centerCrop()
// .error(R.drawable.ic_menu_camera)
// .into(holder.img);
// }
// will messing up
holder.img.setTag(R.id.imageid, post.getPostId());
if(url!=null &&
holder.img.getTag(R.id.imageid).equals(post.getPostId())){
Glide.with(holder.img)
.load(urlFromNet)
.placeholder(R.drawable.ic_launcher_background)
.centerCrop()
.error(R.drawable.ic_menu_camera)
.into(holder.img);
}
}
其他程序也有类似问题,请问如何解决?
经过长时间的探索,Github community’s sjudd gave me a 来自Whosebug,我按照推荐的答案解决了这个问题。
问题是我需要调用 Glide.clear() 否则,异步加载无序完成仍可能导致视图回收问题。
以下是我最新的代码:
@Override
public void onBindViewHolder(@NonNull PostlistViewHolder holder, final int i) {
final Post post = postlist.get(i);
String url=post.getPictureUrl();
holder.img.setTag(R.id.imageid, post.getPostId());
if(url!=null && url.length()>0
&& holder.img.getTag(R.id.imageid).equals(post.getPostId())
){
Glide.with(holder.img.getContext())
.load(url)
.placeholder(R.drawable.ic_launcher_background)
.centerCrop()
.error(R.drawable.ic_error_404)
.into(holder.img);
}else {
Glide.with(holder.img.getContext()).clear(holder.img);
holder.img.setImageDrawable(fragment.getResources().getDrawable(R.drawable.ic_launcher_background));
}
}
当我尝试判断urlFromNet
是否为Null时,图片在RecyclerView中不会按postlist
排序,会很乱
@Override
public void onBindViewHolder(@NonNull PostlistViewHolder holder, final int i) {
final Post post = postlist.get(i);
String urlFromNet=post.getPictureUrl();
// fine
// holder.img.setTag(R.id.imageid, post.getPostId());
// if(holder.img.getTag(R.id.imageid).equals(post.getPostId())){
// Glide.with(holder.img)
// .load(url)
// .placeholder(R.drawable.ic_launcher_background)
// .centerCrop()
// .error(R.drawable.ic_menu_camera)
// .into(holder.img);
// }
// will messing up
holder.img.setTag(R.id.imageid, post.getPostId());
if(url!=null &&
holder.img.getTag(R.id.imageid).equals(post.getPostId())){
Glide.with(holder.img)
.load(urlFromNet)
.placeholder(R.drawable.ic_launcher_background)
.centerCrop()
.error(R.drawable.ic_menu_camera)
.into(holder.img);
}
}
其他程序也有类似问题,请问如何解决?
经过长时间的探索,Github community’s sjudd gave me a
问题是我需要调用 Glide.clear() 否则,异步加载无序完成仍可能导致视图回收问题。
以下是我最新的代码:
@Override
public void onBindViewHolder(@NonNull PostlistViewHolder holder, final int i) {
final Post post = postlist.get(i);
String url=post.getPictureUrl();
holder.img.setTag(R.id.imageid, post.getPostId());
if(url!=null && url.length()>0
&& holder.img.getTag(R.id.imageid).equals(post.getPostId())
){
Glide.with(holder.img.getContext())
.load(url)
.placeholder(R.drawable.ic_launcher_background)
.centerCrop()
.error(R.drawable.ic_error_404)
.into(holder.img);
}else {
Glide.with(holder.img.getContext()).clear(holder.img);
holder.img.setImageDrawable(fragment.getResources().getDrawable(R.drawable.ic_launcher_background));
}
}