ホームページ  >  に質問  >  本文

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;
  }
大家讲道理大家讲道理2743日前505

全員に返信(2)返信します

  • 阿神

    阿神2017-04-18 10:55:21

    再利用には同じタイプのビューが必要です
    説明によると、各項目のタイプは一意であるため、コードでは再利用できるかどうかがわかりません。他の場所で必要な一意の識別子 (id) は、RecyclerView で必要なタイプと混合されます。2 つのアイテムのビューを共有する場合は、2 つのビューのタイプが同じである必要があります (ID は異なる場合があります)。

    返事
    0
  • 巴扎黑

    巴扎黑2017-04-18 10:55:21

    +1 上記のアイテムタイプは異なるため、再利用できません

    返事
    0
  • キャンセル返事