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

如下代碼是一個顯示圖片的RecyclerView 的Adapter用到的,當點擊圖片,跳到另外一個Activity顯示大圖。RecyclerView 與ListView不一樣 然而沒有setOnClickListener() 方法, 設置事件監聽, 使用下面的方式。點擊後獲取到圖片url 傳遞給另外一個activity java

@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);

}

 

然而這段代碼報錯app

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

setTag(Object tag) 還有一個重載方法 setTag(int key, Object tag)ide

上面的紅色代碼 改爲url

holder.iv.setTag(1, url);

 

這樣又報另一個錯spa

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

 

因此這個key 不要隨便用一個int 數, 改用某個R.id.xxx 好比code

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

get的地方也相應改掉blog

 

這樣問題得以解決事件

相關文章
相關標籤/搜索