第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

CommonViewHolder中設置使用Glide設置ImageView報錯java.lang.IllegalArgumentException: You must not call setTag() on a view Glide is targeting

代碼是在鴻洋老師的CommonAdapter的基礎上寫的,今天想把Glide引入項目中出現(xiàn)了自己處理不了的錯誤: 代碼結(jié)構(gòu)和調(diào)用是: public class GlideImageTestAct extends AppCompatActivity { ? ? ? ?....... ? ? ? gv.setAdapter(new CommonAdapter(this,datas,R.layout.simple_imageview_layout) { ? ? ? ? ? @Override ? ? ? ? ? public void convert(CommonViewHolder holder, String s) { ? ? ? ? ? ? ? holder.setImageURI(R.id.iv,s); ? ? ? ? ? } ? ? ? ?}); ? ? ? ?....... } public class CommonViewHolder { ? ? ? ?....... ? ? ? ?public CommonViewHolder setImageURI(int resId, String url) { ? ? ? ? ? if (TextUtils.isEmpty(url)) return this; ? ? ? ? ? ?ImageView imageView = getView(resId); Glide.with(mContext).load(url).centerCrop().placeholder(R.mipmap.default_image).error(R.mipmap.error_image).crossFade().into(imageView); ? ? ? ? return this; ? ? ? ? ?} ? ? ? ?....... } 運行報錯: ? ?E/AndroidRuntime: java.lang.IllegalArgumentException: You must not call setTag() on a view Glide is targeting

正在回答

3 回答

有個簡單的方法,不要讓ImageView成為根布局就可以了。這樣子就不會有Tag的相沖問題。

0 回復 有任何疑惑可以回復我~

nice 解決了問題

0 回復 有任何疑惑可以回復我~

經(jīng)過一天的研究問題已經(jīng)解決:

????????解決方式:

? ? ? ? ? ? ? ? 將原CommonViewHolder中:

????????????????????????public CommonViewHolder(Context mContext, int position, ViewGroup parent,int layoutId) ????????????????????????{
? ?????????????????????????????。。。。。。
? ?????????????????????????????mConvertView.setTag(this);
????????????????????????}

????????????????????????public static CommonViewHolder get(Context mContext, View convertView,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?。。。。。。
? ? ? ?????????????????????????CommonViewHolder holder = (CommonViewHolder) convertView.getTag();
? ? ? ????????????????????????? 。。。。。。
????????????????????????}

????????????????改為:? ?????

????????????????????????public CommonViewHolder(Context mContext, int position, ViewGroup parent,int layoutId)?

????????????????????????{
? ?????????????????????????????。。。。。。
? ?????????????????????????????mConvertView.setTag(R.string.app_name,this);
????????????????????????}

????????????????????????public static CommonViewHolder get(Context mContext, View convertView,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?。。。。。。
? ? ? ? ? ? ? ? ? ? ? ??CommonViewHolder holder = (CommonViewHolder) ????????????convertView.getTag(R.string.app_name);
? ? ? ??????????????????????????。。。。。。
????????????????????????}

????????分析原因:

????????????個人理解是因為我們在CommonViewHolder中的

????????????????public CommonViewHolder setImageURI(int resId, String url) {? ? ?

???????????????????。。。。。。。 ? ??????????????????????????????????????Glide.with(mContext).load(url).centerCrop().placeholder(R.mipmap.default_image)

????????.error(R.mipmap.error_image).crossFade().into(imageView);
??????????????????。。。。。。
????????????????}

????????????使用的Glide加載圖片的源碼中也使用了setTag和getTag模式而,與CommonViewHolder中所用的Tag符號發(fā)生了重復沖突,所以我們應運用setTag(int,Object)的方法設置Tag以避免重復(注:setTag此處的第一個參數(shù)必須是資源文件的生成的int符,如果任意填寫一個int數(shù)字則會報錯)。

?ps:上面屬于個人理解,如有錯誤歡迎指正。

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Android-打造萬能適配器
  • 參與學習       34696    人
  • 解答問題       114    個

本課程通過對傳統(tǒng)的ListView數(shù)據(jù)綁定寫法,打造萬能適配器

進入課程

CommonViewHolder中設置使用Glide設置ImageView報錯java.lang.IllegalArgumentException: You must not call setTag() on a view Glide is targeting

我要回答 關注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號