You must not call setTag() on a view Glide is targeting when use Glide

以下代码是一个显示图片的RecyclerView 的Adapter用到的,当点击图片,跳到另一个Activity显示大图。RecyclerView 与ListView不同 然而没有setOnClickListener() 方法, 设置事件监听, 使用下面的方式。点击后获取到图片url 传递给另一个activity 

@Override
public ImageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

    View view =  mLayoutInflater.inflate(R.layout.item_layout, parent, false);
    final ImageViewHolder holder = new ImageViewHolder(view);
    holder.iv.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String url = (String)v.getTag(R.id.recycler_item);
            Intent intent = new Intent(mContext, ImageActivity.class);
            intent.putExtra(ImageActivity.EXTRA_URL, url);
            mContext.startActivity(intent);
        }
    });
    return holder;

}
@Override
public void onBindViewHolder(ImageViewHolder holder, int position) {

    String url = mDatas.get(position).getUrl();
    holder.iv.setTag(url);

    Glide.with(mContext).load(url).placeholder(R.drawable.image_loading)
        .centerCrop()
        .thumbnail(0.1f)
        .into(holder.iv);

}

 

然而这段代码报错

You must not call setTag() on a view Glide is targeting when use Glide

setTag(Object tag) 还有一个重载方法 setTag(int key, Object tag)

上面的红色代码 改成

holder.iv.setTag(1, url);

 

这样又报另外一个错

java.lang.IllegalArgumentException: The key must be an application-specific resource id

 

所以这个key 不要随便用一个int 数, 改用某个R.id.xxx 比如

holder.iv.setTag(R.id.recycler_item, url);

get的地方也相应改掉

 

这样问题得以解决

 

转载于:https://www.cnblogs.com/lonkiss/p/7077721.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值