android.support.v7.widget.RecyclerView.AdapterDataObserver#android.support.v7.widget.RecyclerView.ViewHolder源码实例Demo

下面列出了android.support.v7.widget.RecyclerView.AdapterDataObserver#android.support.v7.widget.RecyclerView.ViewHolder 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: androidexamples   文件: ScaleInItemAnimator.java
private boolean endChangeAnimationIfNecessary(ChangeInfo changeInfo, ViewHolder item) {
    boolean oldItem = false;
    if (changeInfo.newHolder == item) {
        changeInfo.newHolder = null;
    } else if (changeInfo.oldHolder == item) {
        changeInfo.oldHolder = null;
        oldItem = true;
    } else {
        return false;
    }
    ViewCompat.setAlpha(item.itemView, 1);
    ViewCompat.setTranslationX(item.itemView, 0);
    ViewCompat.setTranslationY(item.itemView, 0);
    dispatchChangeFinished(item, oldItem);
    return true;
}
 
源代码2 项目: Nimingban   文件: BaseItemAnimator.java
private boolean endChangeAnimationIfNecessary(ChangeInfo changeInfo, ViewHolder item) {
  boolean oldItem = false;
  if (changeInfo.newHolder == item) {
    changeInfo.newHolder = null;
  } else if (changeInfo.oldHolder == item) {
    changeInfo.oldHolder = null;
    oldItem = true;
  } else {
    return false;
  }
  ViewCompat.setAlpha(item.itemView, 1);
  ViewCompat.setTranslationX(item.itemView, 0);
  ViewCompat.setTranslationY(item.itemView, 0);
  dispatchChangeFinished(item, oldItem);
  return true;
}
 
源代码3 项目: letv   文件: ItemDragHelperCallback.java
public void onMoved(RecyclerView recyclerView, ViewHolder viewHolder, int fromPos, ViewHolder target, int toPos, int x, int y) {
    if (recyclerView.getAdapter() instanceof OnGridItemMoveListener) {
        OnGridItemMoveListener listener = (OnGridItemMoveListener) recyclerView.getAdapter();
        ChannelFragmentAdapter adapter = (ChannelFragmentAdapter) recyclerView.getAdapter();
        int itemSize = adapter.getItemCount();
        int topSize = adapter.getTopSize();
        if (fromPos > toPos) {
            if (toPos == topSize + 1) {
                callBack(listener, viewHolder, fromPos, target, toPos, true, false);
            } else {
                callBack(listener, viewHolder, fromPos, target, toPos, false, false);
            }
        } else if (toPos == itemSize - 1) {
            callBack(listener, viewHolder, fromPos, target, toPos, false, true);
        } else {
            callBack(listener, viewHolder, fromPos, target, toPos, false, false);
        }
    }
}
 
源代码4 项目: AndroidChromium   文件: BookmarkItemsAdapter.java
@SuppressFBWarnings("BC_UNCONFIRMED_CAST")
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    BookmarkId id = getItem(position);

    switch (getItemViewType(position)) {
        case PROMO_HEADER_VIEW:
        case DIVIDER_VIEW:
            break;
        case FOLDER_VIEW:
            ((BookmarkRow) holder.itemView).setBookmarkId(id);
            break;
        case BOOKMARK_VIEW:
            ((BookmarkRow) holder.itemView).setBookmarkId(id);
            break;
        default:
            assert false : "View type not supported!";
    }
}
 
源代码5 项目: androidexamples   文件: ScaleInItemAnimator.java
@Override
public boolean animateChange(ViewHolder oldHolder, ViewHolder newHolder,
                             int fromX, int fromY, int toX, int toY) {
    final float prevTranslationX = ViewCompat.getTranslationX(oldHolder.itemView);
    final float prevTranslationY = ViewCompat.getTranslationY(oldHolder.itemView);
    final float prevAlpha = ViewCompat.getAlpha(oldHolder.itemView);
    endAnimation(oldHolder);
    int deltaX = (int) (toX - fromX - prevTranslationX);
    int deltaY = (int) (toY - fromY - prevTranslationY);
    // recover prev translation state after ending animation
    ViewCompat.setTranslationX(oldHolder.itemView, prevTranslationX);
    ViewCompat.setTranslationY(oldHolder.itemView, prevTranslationY);
    ViewCompat.setAlpha(oldHolder.itemView, prevAlpha);
    if (newHolder != null && newHolder.itemView != null) {
        // carry over translation values
        endAnimation(newHolder);
        ViewCompat.setTranslationX(newHolder.itemView, -deltaX);
        ViewCompat.setTranslationY(newHolder.itemView, -deltaY);
        ViewCompat.setAlpha(newHolder.itemView, 0);
    }
    mPendingChanges.add(new ChangeInfo(oldHolder, newHolder, fromX, fromY, toX, toY));
    return true;
}
 
源代码6 项目: RecyclerviewAnimators   文件: BaseItemAnimator.java
private boolean endChangeAnimationIfNecessary(ChangeInfo changeInfo, ViewHolder item) {
    boolean oldItem = false;
    if (changeInfo.newHolder == item) {
        changeInfo.newHolder = null;
    } else if (changeInfo.oldHolder == item) {
        changeInfo.oldHolder = null;
        oldItem = true;
    } else {
        return false;
    }
    ViewCompat.setAlpha(item.itemView, 1);
    ViewCompat.setTranslationX(item.itemView, 0);
    ViewCompat.setTranslationY(item.itemView, 0);
    dispatchChangeFinished(item, oldItem);
    return true;
}
 
源代码7 项目: actor-platform   文件: CustomItemAnimator.java
private boolean endChangeAnimationIfNecessary(ChangeInfo changeInfo, ViewHolder item) {
    boolean oldItem = false;
    if (changeInfo.newHolder == item) {
        changeInfo.newHolder = null;
    } else if (changeInfo.oldHolder == item) {
        changeInfo.oldHolder = null;
        oldItem = true;
    } else {
        return false;
    }
    ViewCompat.setAlpha(item.itemView, 1);
    ViewCompat.setTranslationX(item.itemView, 0);
    ViewCompat.setTranslationY(item.itemView, 0);
    dispatchChangeFinished(item, oldItem);
    return true;
}
 
源代码8 项目: APlayer   文件: HeaderAdapter.java
void disposeLoad(final ViewHolder holder) {
  //
  final ViewGroup parent =
      holder.itemView instanceof ViewGroup ? (ViewGroup) holder.itemView : null;
  if (parent != null) {
    for (int i = 0; i < parent.getChildCount(); i++) {
      final View childView = parent.getChildAt(i);
      if (childView instanceof SimpleDraweeView) {
        final Object tag = childView.getTag();
        if (tag instanceof Disposable) {
          final Disposable disposable = (Disposable) tag;
          if (!disposable.isDisposed()) {
            disposable.dispose();
          }
          childView.setTag(null);
        }
      }
    }
  }
}
 
源代码9 项目: MultiView   文件: BaseItemAnimator.java
@Override
public boolean animateMove(final ViewHolder holder, int fromX, int fromY,
                           int toX, int toY) {
    final View view = holder.itemView;
    fromX += ViewCompat.getTranslationX(holder.itemView);
    fromY += ViewCompat.getTranslationY(holder.itemView);
    endAnimation(holder);
    int deltaX = toX - fromX;
    int deltaY = toY - fromY;
    if (deltaX == 0 && deltaY == 0) {
        dispatchMoveFinished(holder);
        return false;
    }
    // pre-translate here while waiting for the other(remove) to finish
    if (deltaX != 0) {
        ViewCompat.setTranslationX(view, -deltaX);
    }
    if (deltaY != 0) {
        ViewCompat.setTranslationY(view, -deltaY);
    }
    mPendingMoves.add(new MoveInfo(holder, fromX, fromY, toX, toY));
    return true;
}
 
源代码10 项目: 365browser   文件: DownloadHistoryAdapter.java
@Override
public ViewHolder createViewHolder(ViewGroup parent) {
    DownloadItemView v = (DownloadItemView) LayoutInflater.from(parent.getContext()).inflate(
            R.layout.download_item_view, parent, false);
    v.setSelectionDelegate(getSelectionDelegate());
    if (mUiConfig != null) v.configureWideDisplayStyle(mUiConfig);
    mViews.add(v);
    return new DownloadHistoryItemViewHolder(v);
}
 
private MoveInfo(ViewHolder holder, int fromX, int fromY, int toX, int toY) {
    this.holder = holder;
    this.fromX = fromX;
    this.fromY = fromY;
    this.toX = toX;
    this.toY = toY;
}
 
源代码12 项目: FancyAccordionView   文件: CollapsedViewHolder.java
@Override
public Animator onAnimateChange(final ViewHolder oldHolder, ViewHolder newHolder,
                                long duration) {
    if (!(oldHolder instanceof ArrowItemViewHolder)
            || !(newHolder instanceof ArrowItemViewHolder)) {
        return null;
    }

    final boolean isCollapsing = this == newHolder;
    setChangingViewsAlpha(isCollapsing ? 0f : 1f);

    final Animator changeAnimatorSet = isCollapsing
            ? createCollapsingAnimator((ArrowItemViewHolder) oldHolder, duration)
            : createExpandingAnimator((ArrowItemViewHolder) newHolder, duration);
    changeAnimatorSet.addListener(new AnimatorListenerAdapter() {
        @Override
        public void onAnimationEnd(Animator animator) {
            if (arrow != null) {
                arrow.setVisibility(View.VISIBLE);
                arrow.setTranslationY(0f);
                arrow.jumpDrawablesToCurrentState();
            }
            setChangingViewsAlpha(1f);
        }
    });
    return changeAnimatorSet;
}
 
源代码13 项目: adt-leanback-support   文件: DefaultItemAnimator.java
private MoveInfo(ViewHolder holder, int fromX, int fromY, int toX, int toY) {
    this.holder = holder;
    this.fromX = fromX;
    this.fromY = fromY;
    this.toX = toX;
    this.toY = toY;
}
 
源代码14 项目: JumpGo   文件: VerticalItemAnimator.java
private ChangeInfo(ViewHolder oldHolder, ViewHolder newHolder,
                   int fromX, int fromY, int toX, int toY) {
    this(oldHolder, newHolder);
    this.fromX = fromX;
    this.fromY = fromY;
    this.toX = toX;
    this.toY = toY;
}
 
源代码15 项目: agera   文件: RepositoryAdapterTest.java
@Test
public void shouldCallRecycleForOnFailedToRecycleViewForLayoutPresenter() {
  repositoryAdapter.getItemCount(); //Trigger a refresh

  repositoryAdapter.startObserving();
  updateDispatcher.update();
  runUiThreadTasksIncludingDelayedTasks();
  repositoryAdapter.stopObserving();
  final ViewHolder viewHolder = new ViewHolder(view) {};
  repositoryAdapter.onBindViewHolder(viewHolder, 4);

  repositoryAdapter.onFailedToRecycleView(viewHolder);

  verify(layoutPresenter).recycle(view);
}
 
源代码16 项目: delion   文件: BookmarkPromoHeader.java
/**
 * @return Signin promo header {@link ViewHolder} instance that can be used with
 *         {@link RecyclerView}.
 */
ViewHolder createHolder(ViewGroup parent) {
    SigninAndSyncView.Listener listener = new SigninAndSyncView.Listener() {
        @Override
        public void onViewDismissed() {
            setSigninPromoDeclined();
            updateShouldShow(true);
        }
    };

    return new ViewHolder(
            SigninAndSyncView.create(parent, listener, SigninAccessPoint.BOOKMARK_MANAGER)) {};
}
 
源代码17 项目: agera   文件: RepositoryAdapter.java
/**
 * Builds the {@link RepositoryAdapter} that presents the provided repositories in order and
 * observes the repositories as well as any additional observables while the provided
 * {@link Activity} is started (between (between {@link Activity#onStart()} and
 * {@link Activity#onStop()}).
 * <p>
 * Note: Can only be called from {@link Activity#onCreate} ()}
 */
@TargetApi(14)
@NonNull
public Adapter<ViewHolder> whileStarted(@NonNull final Activity activity) {
  final RepositoryAdapter repositoryAdapter = new RepositoryAdapter(this);
  activity.getApplication().registerActivityLifecycleCallbacks(
      new WhileStartedActivityLifecycleCallbacks(activity, repositoryAdapter));
  return repositoryAdapter;
}
 
源代码18 项目: MultiView   文件: BaseItemAnimator.java
private ChangeInfo(ViewHolder oldHolder, ViewHolder newHolder,
                   int fromX, int fromY, int toX, int toY) {
    this(oldHolder, newHolder);
    this.fromX = fromX;
    this.fromY = fromY;
    this.toX = toX;
    this.toY = toY;
}
 
private ChangeInfo(ViewHolder oldHolder, ViewHolder newHolder,
                   int fromX, int fromY, int toX, int toY) {
    this(oldHolder, newHolder);
    this.fromX = fromX;
    this.fromY = fromY;
    this.toX = toX;
    this.toY = toY;
}
 
源代码20 项目: FloatingSearchView   文件: BaseItemAnimator.java
@Override
public boolean animateChange(ViewHolder oldHolder, ViewHolder newHolder,
        int fromX, int fromY, int toX, int toY) {
    if (oldHolder == newHolder) {
        // Don't know how to run change animations when the same view holder is re-used.
        // run a move animation to handle position changes.
        return animateMove(oldHolder, fromX, fromY, toX, toY);
    }
    final float prevTranslationX = ViewCompat.getTranslationX(oldHolder.itemView);
    final float prevTranslationY = ViewCompat.getTranslationY(oldHolder.itemView);
    final float prevAlpha = ViewCompat.getAlpha(oldHolder.itemView);
    resetAnimation(oldHolder);
    int deltaX = (int) (toX - fromX - prevTranslationX);
    int deltaY = (int) (toY - fromY - prevTranslationY);
    // recover prev translation state after ending animation
    ViewCompat.setTranslationX(oldHolder.itemView, prevTranslationX);
    ViewCompat.setTranslationY(oldHolder.itemView, prevTranslationY);
    ViewCompat.setAlpha(oldHolder.itemView, prevAlpha);
    if (newHolder != null) {
        // carry over translation values
        resetAnimation(newHolder);
        ViewCompat.setTranslationX(newHolder.itemView, -deltaX);
        ViewCompat.setTranslationY(newHolder.itemView, -deltaY);
        ViewCompat.setAlpha(newHolder.itemView, 0);
    }
    mPendingChanges.add(new ChangeInfo(oldHolder, newHolder, fromX, fromY, toX, toY));
    return true;
}
 
源代码21 项目: basic-adapter   文件: BasicAdapter.java
private void configLoad(ViewHolder holder) {
    //if size of data is 0,empty view shows if exists and loading/loaded view  hides.
    if (mData.size() == 0) {
        return;
    }
    if (mParams.loading != null && isLoadEnable()) {
        mParams.loading.setVisibility(View.VISIBLE);
        if (mParams.onLoadMoreListener == null) {
            throw new RuntimeException("OnLoadMoreListener must be init when build loading view !");
        }
        mParams.onLoadMoreListener.onLoad();
    }
}
 
源代码22 项目: actor-platform   文件: CustomItemAnimator.java
@Override
public boolean animateChange(ViewHolder oldHolder, ViewHolder newHolder,
                             int fromX, int fromY, int toX, int toY) {
    if (oldHolder == newHolder) {
        // Don't know how to run change animations when the same view holder is re-used.
        // run a move animation to handle position changes.
        return animateMove(oldHolder, fromX, fromY, toX, toY);
    }
    final float prevTranslationX = ViewCompat.getTranslationX(oldHolder.itemView);
    final float prevTranslationY = ViewCompat.getTranslationY(oldHolder.itemView);
    final float prevAlpha = ViewCompat.getAlpha(oldHolder.itemView);
    resetAnimation(oldHolder);
    int deltaX = (int) (toX - fromX - prevTranslationX);
    int deltaY = (int) (toY - fromY - prevTranslationY);
    // recover prev translation state after ending animation
    ViewCompat.setTranslationX(oldHolder.itemView, prevTranslationX);
    ViewCompat.setTranslationY(oldHolder.itemView, prevTranslationY);
    ViewCompat.setAlpha(oldHolder.itemView, prevAlpha);
    if (newHolder != null) {
        // carry over translation values
        resetAnimation(newHolder);
        ViewCompat.setTranslationX(newHolder.itemView, -deltaX);
        ViewCompat.setTranslationY(newHolder.itemView, -deltaY);
        ViewCompat.setAlpha(newHolder.itemView, 0);
    }
    mPendingChanges.add(new ChangeInfo(oldHolder, newHolder, fromX, fromY, toX, toY));
    return false;
}
 
@Override
public boolean animateChange(ViewHolder oldHolder, ViewHolder newHolder,
                             int fromX, int fromY, int toX, int toY) {
    if (oldHolder == newHolder) {
        // Don't know how to run change animations when the same view holder is re-used.
        // run a move animation to handle position changes.
        return animateMove(oldHolder, fromX, fromY, toX, toY);
    }
    final float prevTranslationX = ViewCompat.getTranslationX(oldHolder.itemView);
    final float prevTranslationY = ViewCompat.getTranslationY(oldHolder.itemView);
    final float prevAlpha = ViewCompat.getAlpha(oldHolder.itemView);
    resetAnimation(oldHolder);
    int deltaX = (int) (toX - fromX - prevTranslationX);
    int deltaY = (int) (toY - fromY - prevTranslationY);
    // recover prev translation state after ending animation
    ViewCompat.setTranslationX(oldHolder.itemView, prevTranslationX);
    ViewCompat.setTranslationY(oldHolder.itemView, prevTranslationY);
    ViewCompat.setAlpha(oldHolder.itemView, prevAlpha);
    if (newHolder != null) {
        // carry over translation values
        resetAnimation(newHolder);
        ViewCompat.setTranslationX(newHolder.itemView, -deltaX);
        ViewCompat.setTranslationY(newHolder.itemView, -deltaY);
        ViewCompat.setAlpha(newHolder.itemView, 0);
    }
    mPendingChanges.add(new ChangeInfo(oldHolder, newHolder, fromX, fromY, toX, toY));
    return true;
}
 
源代码24 项目: letv   文件: ItemDragHelperCallback.java
public boolean onMove(RecyclerView recyclerView, ViewHolder viewHolder, ViewHolder target) {
    if (viewHolder.getItemViewType() != target.getItemViewType() && !(recyclerView.getAdapter() instanceof OnGridItemMoveListener)) {
        return false;
    }
    if (recyclerView.getAdapter() instanceof OnItemMoveListener) {
        ((OnItemMoveListener) recyclerView.getAdapter()).onItemMove(viewHolder.getAdapterPosition(), target.getAdapterPosition());
    }
    return true;
}
 
源代码25 项目: android-Stupid-Adapter   文件: XRecylerAdapter.java
@Override
public void onBindViewHolder(ViewHolder vh, int position) {
	XRecyclerViewHolder<T> holder = null;
	if (vh.itemView.getTag() instanceof XRecyclerViewHolder) {
		holder = (XRecyclerViewHolder<T>) vh.itemView.getTag();
		holder.onDestory(position, getItemCount());
		holder.setView(vh.itemView).getView(mData.get(position), position,
				isOnScrolling());
	}

}
 
源代码26 项目: Nimingban   文件: BaseItemAnimator.java
private MoveInfo(ViewHolder holder, int fromX, int fromY, int toX, int toY) {
  this.holder = holder;
  this.fromX = fromX;
  this.fromY = fromY;
  this.toX = toX;
  this.toY = toY;
}
 
源代码27 项目: FancyAccordionView   文件: ItemAnimator.java
@Override
public boolean canReuseUpdatedViewHolder(@NonNull ViewHolder viewHolder,
                                         @NonNull List<Object> payloads) {
    final boolean defaultReusePolicy = super.canReuseUpdatedViewHolder(viewHolder, payloads);
    // Whenever we have a payload, this is an in-place animation.
    return !payloads.isEmpty() || defaultReusePolicy;
}
 
源代码28 项目: AndroidChromium   文件: DownloadHistoryAdapter.java
@Override
public ViewHolder createViewHolder(ViewGroup parent) {
    DownloadItemView v = (DownloadItemView) LayoutInflater.from(parent.getContext()).inflate(
            R.layout.download_item_view, parent, false);
    v.setSelectionDelegate(getSelectionDelegate());
    return new DownloadHistoryItemViewHolder(v);
}
 
源代码29 项目: Nimingban   文件: BaseItemAnimator.java
private void doAnimateRemove(final RecyclerView.ViewHolder holder) {
  if (holder instanceof AnimateViewHolder) {
    ((AnimateViewHolder) holder).animateRemoveImpl(new DefaultRemoveVpaListener(holder));
  } else {
    animateRemoveImpl(holder);
  }

  mRemoveAnimations.add(holder);
}
 
源代码30 项目: FancyAccordionView   文件: ItemAnimator.java
@Override
public
@NonNull
ItemHolderInfo recordPreLayoutInformation(@NonNull State state,
                                          @NonNull ViewHolder viewHolder, @AdapterChanges int changeFlags,
                                          @NonNull List<Object> payloads) {
    final ItemHolderInfo itemHolderInfo = super.recordPreLayoutInformation(state, viewHolder,
            changeFlags, payloads);
    if (itemHolderInfo instanceof PayloadItemHolderInfo) {
        ((PayloadItemHolderInfo) itemHolderInfo).setPayloads(payloads);
    }
    return itemHolderInfo;
}