Ama*_*iam 38 android android-glide
我在我的应用程序中使用Glide库内部自定义适配器视图.但我有错误:
"You must not call setTag() on a view Glide is targeting"
Run Code Online (Sandbox Code Playgroud)
这部分代码:
@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;
}
Run Code Online (Sandbox Code Playgroud)
那怎么解决呢?
TWi*_*Rob 69
关键是ViewTarget.setTagId; 设置它将释放默认值setTag,ImageView因此您可以在项目布局中以root身份使用它.它在问题#370中的Glide 3.6.0中引入.
在你的清单中添加:
<application
android:name=".App"
Run Code Online (Sandbox Code Playgroud)
然后创建应用程序上下文类:
public class App extends Application {
@Override public void onCreate() {
super.onCreate();
ViewTarget.setTagId(R.id.glide_tag);
}
}
Run Code Online (Sandbox Code Playgroud)
添加以下内容作为src/main/values/ids.xml:
<resources>
<item type="id" name="glide_tag" />
</resources>
Run Code Online (Sandbox Code Playgroud)
(或者只是将上面的内容添加<item ... />到任何resourcesxml中values)
P V*_*tak 17
GlidesetTag(Object)内部使用方法.因此,setTag(Object)从目标视图中删除所有调用.即ImageView
如果您确实需要setTag在视图上使用方法,则可以使用setTag(int,Object)方法.
| 归档时间: |
|
| 查看次数: |
17768 次 |
| 最近记录: |