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

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

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

모든 응답(2)
阿神

재사용하려면 동일한 유형의 뷰가 필요합니다.
설명에 따르면 각 항목의 유형은 고유합니다. 즉, 동일한 것이 아니며 코드에서는 재사용 가능 여부를 알 수 없습니다.
여기서는 RecyclerView에서 요구하는 유형과 다른 곳에서 요구되는 고유 식별자(id)를 혼합하면 혼동이 생길 수 있습니다. 두 항목의 보기를 공유하려면 두 보기의 유형이 동일해야 합니다(해당 ID는 5월 5일). 달라져요)

巴扎黑

+1 위 아이템 유형이 달라 재사용이 불가능합니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!