@Override
  public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    if (mHeaderViews.get(viewType) != null) {
      ViewHolder holder =
          ViewHolder.createViewHolder(parent.getContext(), mHeaderViews.get(viewType));
      return holder;

    } else if (mFootViews.get(viewType) != null) {
      ViewHolder holder =
          ViewHolder.createViewHolder(parent.getContext(), mFootViews.get(viewType));
      return holder;
    }
    return mInnerAdapter.onCreateViewHolder(parent, viewType);
  }
Ejemplo n.º 2
0
  @NonNull
  public Observable<PageResult<T>> load(
      @NonNull DataConverter<T> dataConverter,
      @NonNull DatabaseQuery databaseQuery,
      @NonNull Observable<Page> pageObservable) {
    final SparseArrayCompat<T> allItems = new SparseArrayCompat<>();
    final Observable<Cursor> cursorObservable =
        database.load(databaseQuery).doOnNext(cursor -> allItems.clear());

    return Observable.combineLatest(
        pageObservable,
        cursorObservable,
        (page, cursor) -> {
          final List<T> pageItems = new ArrayList<>();
          for (int i = page.getStart(),
                  size = Math.min(cursor.getCount(), page.getStart() + page.getSize());
              i < size;
              i++) {
            T item = allItems.get(i);
            if (item == null) {
              cursor.moveToPosition(i);
              item = dataConverter.from(cursor);
              allItems.put(i, item);
            }
            pageItems.add(item);
          }

          return new PageResult<>(cursor, allItems, pageItems, page);
        });
  }
 public boolean bindView(View v, Cursor c) {
   int id = v.getId();
   String columnName = map.get(id);
   if (columnName == null) return false;
   String value = c.getString(c.getColumnIndexOrThrow(columnName));
   if (v instanceof TextView) {
     TextView tv = (TextView) v;
     tv.setText((value == null) ? "" : Html.fromHtml(value));
     return true;
   }
   if (v instanceof ImageView) {
     ImageView iv = (ImageView) v;
     if (value.equals("")) {
       iv.setVisibility(View.GONE);
       return true;
     }
     // First, try to find the resource id
     String drawable = value.replace(".jpg", "").replace(".png", "").toLowerCase();
     int bitmapid =
         context.getResources().getIdentifier(drawable, "drawable", context.getPackageName());
     if (bitmapid != 0) {
       iv.setImageResource(bitmapid);
       iv.setVisibility(View.VISIBLE);
       return true;
     }
     try {
       Bitmap pic = BitmapFactory.decodeStream(context.getAssets().open(value));
       if (value.startsWith("Photos")) {
         Matrix mtx = new Matrix();
         mtx.postScale(0.5f, 0.5f);
         mtx.postRotate(-90, pic.getWidth() / 2, pic.getHeight() / 2);
         iv.setImageBitmap(
             Bitmap.createBitmap(
                 pic,
                 (int) (2 * pic.getWidth() / 3),
                 0,
                 pic.getWidth() / 3,
                 pic.getHeight(),
                 mtx,
                 true));
       } else {
         iv.setImageBitmap(pic);
       }
       iv.setVisibility(View.VISIBLE);
       return true;
     } catch (IOException e) {
       e.printStackTrace();
       //				throw new IllegalStateException(e);
     }
   }
   return false;
 }
 @Override
 public void onBindViewHolder(ViewHolder holder, int position) {
   if (holder instanceof ViewHolderHeader) {
     ((ViewHolderHeader) holder).setTitle(titleIndexs.get(position));
   }
 }
Ejemplo n.º 5
0
 public void onLoadComplete(Loader<Object> paramLoader, Object paramObject)
 {
   if (LoaderManagerImpl.DEBUG)
   {
     String str1 = "onLoadComplete: " + this;
     int i = Log.v("LoaderManager", str1);
   }
   if (this.mDestroyed)
   {
     if (!LoaderManagerImpl.DEBUG)
       return;
     int j = Log.v("LoaderManager", "  Ignoring load complete -- destroyed");
     return;
   }
   SparseArrayCompat localSparseArrayCompat1 = LoaderManagerImpl.this.mLoaders;
   int k = this.mId;
   if (localSparseArrayCompat1.get(k) != this)
   {
     if (!LoaderManagerImpl.DEBUG)
       return;
     int m = Log.v("LoaderManager", "  Ignoring load complete -- not active");
     return;
   }
   LoaderInfo localLoaderInfo1 = this.mPendingLoader;
   if (localLoaderInfo1 != null)
   {
     if (LoaderManagerImpl.DEBUG)
     {
       String str2 = "  Switching to pending loader: " + localLoaderInfo1;
       int n = Log.v("LoaderManager", str2);
     }
     this.mPendingLoader = null;
     SparseArrayCompat localSparseArrayCompat2 = LoaderManagerImpl.this.mLoaders;
     int i1 = this.mId;
     localSparseArrayCompat2.put(i1, null);
     destroy();
     LoaderManagerImpl.this.installLoader(localLoaderInfo1);
     return;
   }
   if ((this.mData != paramObject) || (!this.mHaveData))
   {
     this.mData = paramObject;
     this.mHaveData = true;
     if (this.mStarted)
       callOnLoadFinished(paramLoader, paramObject);
   }
   SparseArrayCompat localSparseArrayCompat3 = LoaderManagerImpl.this.mInactiveLoaders;
   int i2 = this.mId;
   LoaderInfo localLoaderInfo2 = (LoaderInfo)localSparseArrayCompat3.get(i2);
   if ((localLoaderInfo2 != null) && (localLoaderInfo2 != this))
   {
     localLoaderInfo2.mDeliveredData = false;
     localLoaderInfo2.destroy();
     SparseArrayCompat localSparseArrayCompat4 = LoaderManagerImpl.this.mInactiveLoaders;
     int i3 = this.mId;
     localSparseArrayCompat4.remove(i3);
   }
   if (LoaderManagerImpl.this.mActivity == null)
     return;
   if (LoaderManagerImpl.this.hasRunningLoaders())
     return;
   LoaderManagerImpl.this.mActivity.mFragments.startPendingDeferredFragments();
 }