cari

Rumah  >  Soal Jawab  >  teks badan

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;
  }
大家讲道理大家讲道理2803 hari yang lalu528

membalas semua(2)saya akan balas

  • 阿神

    阿神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)

    balas
    0
  • 巴扎黑

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

    +1 Jenis item di tingkat atas berbeza dan tidak boleh digunakan semula

    balas
    0
  • Batalbalas