java - weeex[android]list的实现itemview没有进行重用
大家讲道理
大家讲道理 2017-04-18 10:53:21
0
2
494

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;
  }
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

répondre à tous(2)
阿神

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)

巴扎黑

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!