java - weeex[android]list的實(shí)現(xiàn)itemview沒有進(jìn)行重用
問題描述
list的實(shí)現(xiàn)使用的是RecyclerView,但getItemViewType返回的是dom的ref,ref在一個(gè)dom樹里應(yīng)該是唯一的;
public int getItemViewType(int position) { return generateViewType(getChild(position)); }
private int generateViewType(WXComponent component) { long id; try { id = Integer.parseInt(component.getDomObject().getRef()); String type = component.getDomObject().getAttrs().getScope(); if (!TextUtils.isEmpty(type)) {if (mRefToViewType == null) { mRefToViewType = new ArrayMap<>();}if (!mRefToViewType.containsKey(type)) { mRefToViewType.put(type, id);}id = mRefToViewType.get(type); } } catch (RuntimeException e) { WXLogUtils.eTag(TAG, e); id = RecyclerView.NO_ID; WXLogUtils.e(TAG, 'getItemViewType: NO ID, this will crash the whole render system of WXListRecyclerView'); } return (int) id; }
問題解答
回答1:進(jìn)行重用要是同一個(gè)type的view才行.按照描述, 每個(gè)item的type都是唯一的,也就是彼此都不是同一個(gè)東西,代碼無法分辨具體能不能重用.這里應(yīng)該有個(gè)混淆, 把其他地方需要的唯一標(biāo)識(shí)(id)和RecyclerView需要的type混在一起了.如果希望兩個(gè)Item的View可以共用,這兩個(gè)View的type就應(yīng)該是一樣的(它們的id可能不一樣)
回答2:樓上+1 itemtype不一樣沒法重用
相關(guān)文章:
1. javascript - 微信h5發(fā)送圖文信息,部分設(shè)備點(diǎn)擊“發(fā)送”按鈕時(shí)沒反應(yīng),問題較難重現(xiàn),如何能找到可能存在問題的點(diǎn)?2. objective-c - 做一個(gè)百度地圖定位的demo,結(jié)果出錯(cuò)好多。3. 微信小程序session無法緩存的問題4. java-web - Java WEB:什么樣的jar包必須放到WEB-INF下?有些包放外面tomcat就起不來5. javascript - 關(guān)于微信授權(quán)的問題。6. java - 輸出4個(gè)不相等整數(shù)之間所有任意三個(gè)整數(shù)的乘積7. css - 如何使用 vue transition 實(shí)現(xiàn) ios 按鈕一樣的平滑切換效果8. 如何使用Java1.8編譯1.6JVM可運(yùn)行的class文件9. angular.js - 公眾號(hào)H5頁面 angularjs 怎么動(dòng)態(tài)修改title值(微信6.5.5,動(dòng)態(tài)修改不行 6.5.7闊以)10. node.js - 如何在服務(wù)器部署vuejs項(xiàng)目?
