Weex list复用(三)
来源:互联网 发布:调查问卷数据分析报告 编辑:程序博客网 时间:2024/06/05 18:48
Weex list复用
1.Android中的list
标签list在Android中,对应的组件为Recyclerview。观察如何在Android中形成复用。复用情况下,首先追查对应的RecyclerView.Adapter,方法getItemViewType()返回值必须一致。在Weex对应的是RecyclerViewBaseAdapter
@Override public int getItemViewType(int position) { if (iRecyclerAdapterListener != null) { int result = iRecyclerAdapterListener.getItemViewType(position); return result; } return position; }
对应的返回view type的方法在iRecyclerAdapterListener,而这个值在初始化RecyclerViewBaseAdapter就会被赋值
public RecyclerViewBaseAdapter(IRecyclerAdapterListener Listener) { this.iRecyclerAdapterListener = Listener; }
看谁调用创建adapter:
abstract class BasicListComponent
BasicListComponent在initComponentHostView()方法中,会创建adapter,这时候把自己作为观察者注册到里面,所以在这个类里面追查type.
@Override 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) { id = RecyclerView.NO_ID; } return (int) id; }
系统会取ref和scope两个字段,判断对应的值:
1. 如果scope字段不存在,则直接返回ref,这种情况下不存在复用效果。
2. 两个字段都存在,从mRefToViewType中取scope对应的value,不存在则对对应的scope设置当前的ref值
3. 所以后面复用的view,获取的view type 值都是第一个赋值给该类型的ref
阅读全文
0 0
- Weex list复用(三)
- weex更新方案探索(三)
- 阿里weex研究iOS(三)真机实时调试
- weex sdk集成到Android工程三. weex服务项目搭建
- Weex使用(1)
- Weex
- weex
- WEEX
- weex
- iOSweex集成入门,weex demo如何运行,以及如何修改(三)
- weex采坑之旅(三)Android SDK环境搭建
- weex官方demo weex-hackernews代码解读(下)
- Weex环境构建(一)Weex+Android开发环境
- weex采坑之旅(一)初识weex
- 初识 weex(前端视角)
- iOS集成weex(0)
- [Weex-BBQ]Weex项目中引用css样式的三种姿势
- MySQL List分区(三)
- elasticsearch慢查询日志
- linux安装软件命令
- linux vi命令
- C ++ Primer Plus 第六版 第十章编程练习答案
- MMORPG服务器架构
- Weex list复用(三)
- solr连接mongodb
- Linux笔记(6)-文件与目录管理
- C#-泛型应用实例
- mybits 中CASE WHEN选择类型不一致错误
- HDU-1272 小希的迷宫(并查集)
- 了解会计人的职业危机
- 深度学习(Deep Learning )学习笔记整理系列之七
- 安装php拓展