繁体   English   中英

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 社区的 sjudd给了我一个来自 stackoverflow 的链接,我按照推荐的答案解决了这个问题。

问题是我需要调用 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));
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM