@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); }
@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)); } }
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(); }