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

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 电动车车头锁开不了怎么办 锁里面卡了东西怎么办 电脑显示器闪屏然后黑屏怎么办 枪火游侠闪退怎么办 欧卡2气压过低怎么办 微信安装包己损坏怎么办 qq超市金币累计满了怎么办 我该怎么办?欠了那么多钱? 枪神王座被检测怎么办 酷派大神x7刷机出1004怎么办 水鬼捞锤塌方了怎么办 请事假领导不批怎么办 要请假领导不批怎么办 有急事请假不批怎么办 员工要请假不批怎么办 普法知识竞赛要重新参与怎么办 我被当兵的打怎么办 头发没了一小块怎么办 改革怎么看我该怎么办 笔记本电脑卡死了怎么办关不了机 电脑卡死了怎么办关不了机 火车上别人占座怎么办 火车上遇到占座怎么办 青少年体力差容易疲劳怎么办 四年级的孩子作业拖拉怎么办 四年级孩子不写作业怎么办 四年级孩子不爱写作业怎么办 四年级的孩子写作业慢怎么办 四年级孩子不想写作业怎么办 四年级孩子写作业特别慢怎么办 6岁儿童睡眠少怎么办 四岁儿童睡眠少怎么办 因睡眠不足第二天没有精神怎么办 睡时间久了头疼怎么办 睡不踏实老醒怎么办 运动过后大腿肌肉酸痛怎么办 牛奶喝多了想吐怎么办 运动过度后吐了怎么办 喝酒后反胃想吐怎么办 拔牙后反胃想吐怎么办 健身完恶心想吐怎么办