Maison > Questions et réponses > le corps du texte
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;
}
阿神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)
巴扎黑2017-04-18 10:55:21
+1 Le type d'objet à l'étage est différent et ne peut pas être réutilisé