Maison  >  Questions et réponses  >  le corps du texte

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 Il y a quelques jours498

répondre à tous(2)je répondrai

  • 阿神

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

    La réutilisation nécessite des vues du même type.
    Selon la description, le type de chaque élément est unique, c'est-à-dire qu'il ne s'agit pas de la même chose et le code ne peut pas dire s'il peut être réutilisé.
    Il devrait y avoir une confusion ici, en mélangeant l'identifiant unique (id) requis ailleurs avec le type requis par RecyclerView. Si vous souhaitez que les vues de deux éléments soient partagées, les types des deux vues doivent être les mêmes (leurs identifiants peuvent être partagés). être différent)

    répondre
    0
  • 巴扎黑

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

    +1 Le type d'objet à l'étage est différent et ne peut pas être réutilisé

    répondre
    0
  • Annulerrépondre