以下代碼是一個顯示圖片的RecyclerView 的Adapter用到的,當點擊圖片,跳到另一個Activity顯示大圖。RecyclerView 與ListView不同 然而沒有setOnClickListener() 方法, 設置事件監聽, 使用下麵的方式。點擊後獲取到圖片url 傳遞給另一個a ...
以下代碼是一個顯示圖片的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的地方也相應改掉
這樣問題得以解決