Rumah > Soal Jawab > teks badan
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
Penggunaan semula memerlukan paparan jenis yang sama.
Menurut penerangan, jenis setiap item adalah unik, iaitu, ia bukan perkara yang sama dan kod tidak dapat mengetahui sama ada ia boleh digunakan semula.
Seharusnya terdapat kekeliruan di sini, mencampurkan pengecam unik (id) yang diperlukan di tempat lain dengan jenis yang diperlukan oleh RecyclerView Jika anda mahu Paparan dua Item dikongsi, jenis kedua-dua Paparan hendaklah sama (id mereka Mungkin. menjadi berbeza)