错误“您不能在视图上调用setTag()Glide的目标是”使用Glide时“

我在我的应用程序中使用Glide库内部自定义适配器视图。 但我有错误:

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

这部分我的代码:

  @Override public View getView(int position, View view, ViewGroup container) { ViewHolder holder; if (view == null) { holder = new ViewHolder(); view = holder.imageView = new ImageView(context); view.setTag(holder); } else { holder = (ViewHolder) view.getTag(); } holder.imageView.setAdjustViewBounds(true); LinearLayout.LayoutParams vp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); holder.imageView .setLayoutParams(vp); holder.imageView .setScaleType(ImageView.ScaleType.CENTER_CROP); String var_news_article_images = imageIdList.get(getPosition(position)); Glide.with(context) .load(var_news_article_images) .placeholder(R.drawable.placeholder) .into(holder.imageView); return view; } 

那么如何解决呢?

Solutions Collecting From Web of "错误“您不能在视图上调用setTag()Glide的目标是”使用Glide时“"

关键是ViewTarget.setTagId ; 设置它将释放ImageView上的默认setTag ,以便您可以在项目布局中以root身份使用它。 它在Glide 3.6.0中被引入, 问题#370 。

在你的清单中添加这个:

 <application android:name=".App" 

然后创build应用程序上下文类:

 public class App extends Application { @Override public void onCreate() { super.onCreate(); ViewTarget.setTagId(R.id.glide_tag); } } 

添加以下内容作为src/main/values/ids.xml

 <resources> <item type="id" name="glide_tag" /> </resources> 

(或者只需将上面的<item ... />到任何resources xml values

从我从谷歌search中发现,似乎像滑翔和ViewHolder不相处得很好。 我尝试了毕加索。 问题立即解决。

您也可以尝试从TWiStErRob解决scheme,但确保您使用Glide 3.6.0或更高版本。 它没有识别3.5.2上的setTagId(int)

 ImageView mImageAds = (ImageView) findViewById(R.id.iv_img); mImageAds.setTag(R.id.iv_img, i); // "i" means some integer value Glide.with(getActivity()).load(urlPath) .placeholder(R.drawable.ads_banner) .diskCacheStrategy(DiskCacheStrategy.ALL) .into(mImageAds); mImageAds.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { if(mImageAds.getTag() != null) { int position = (Integer) view.getTag(R.id.iv_img); //code here what would you like to do. } } }); 

另见: https : //androidhiker.blogspot.com/2015/10/how-to-resolve-glide-settag-issue.html