java - weeex[android]list的实现itemview没有进行重用
问题描述
list的实现使用的是RecyclerView,但getItemViewType返回的是dom的ref,ref在一个dom树里应该是唯一的;
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:进行重用要是同一个type的view才行.按照描述, 每个item的type都是唯一的,也就是彼此都不是同一个东西,代码无法分辨具体能不能重用.这里应该有个混淆, 把其他地方需要的唯一标识(id)和RecyclerView需要的type混在一起了.如果希望两个Item的View可以共用,这两个View的type就应该是一样的(它们的id可能不一样)
回答2:楼上+1 itemtype不一样没法重用
相关文章:
1. 为什么span的color非要内联样式才起作用?2. javascript - swiper.js嵌套了swiper 初始设置不能向下一个滑动 结束后重新初始3. angular.js - angular-ui-bootstrap 报错无法使用?4. python - 如何修改twisted自带的日志输出格式?5. docker - 如何修改运行中容器的配置6. 高并发写入和更新mysql7. 求救一下,用新版的phpstudy,数据库过段时间会消失是什么情况?8. 老师,请问我打开browsersync出现这个问题怎么解决啊?9. 请问一下各位老鸟 我一直在学习独孤九贱 现在是在tp5 今天发现 这个系列视频没有实战10. 在cmd下进入mysql数据库,可以输入中文,但是查看表信息,不显示中文,是怎么回事,怎新手,请老师

网公网安备