Java 类android.support.v7.widget.RecyclerView.ViewHolder 实例源码
项目:boohee_v5.6
文件:ItemTouchHelper.java
private List<ViewHolder> findSwapTargets(ViewHolder viewHolder) {
if (this.mSwapTargets == null) {
this.mSwapTargets = new ArrayList();
this.mDistances = new ArrayList();
} else {
this.mSwapTargets.clear();
this.mDistances.clear();
}
int margin = this.mCallback.getBoundingBoxMargin();
int left = Math.round(this.mSelectedStartX + this.mDx) - margin;
int top = Math.round(this.mSelectedStartY + this.mDy) - margin;
int right = (viewHolder.itemView.getWidth() + left) + (margin * 2);
int bottom = (viewHolder.itemView.getHeight() + top) + (margin * 2);
int centerX = (left + right) / 2;
int centerY = (top + bottom) / 2;
LayoutManager lm = this.mRecyclerView.getLayoutManager();
int childCount = lm.getChildCount();
for (int i = 0; i < childCount; i++) {
View other = lm.getChildAt(i);
if (other != viewHolder.itemView && other.getBottom() >= top && other.getTop() <= bottom && other.getRight() >= left && other.getLeft() <= right) {
ViewHolder otherVh = this.mRecyclerView.getChildViewHolder(other);
if (this.mCallback.canDropOver(this.mRecyclerView, this.mSelected, otherVh)) {
int dx = Math.abs(centerX - ((other.getLeft() + other.getRight()) / 2));
int dy = Math.abs(centerY - ((other.getTop() + other.getBottom()) / 2));
int dist = (dx * dx) + (dy * dy);
int pos = 0;
int cnt = this.mSwapTargets.size();
int j = 0;
while (j < cnt && dist > ((Integer) this.mDistances.get(j)).intValue()) {
pos++;
j++;
}
this.mSwapTargets.add(pos, otherVh);
this.mDistances.add(pos, Integer.valueOf(dist));
}
}
}
return this.mSwapTargets;
}
项目:boohee_v5.6
文件:DefaultItemAnimator.java
private boolean endChangeAnimationIfNecessary(ChangeInfo changeInfo, ViewHolder item) {
boolean oldItem = false;
if (changeInfo.newHolder == item) {
changeInfo.newHolder = null;
} else if (changeInfo.oldHolder != item) {
return false;
} else {
changeInfo.oldHolder = null;
oldItem = true;
}
ViewCompat.setAlpha(item.itemView, 1.0f);
ViewCompat.setTranslationX(item.itemView, 0.0f);
ViewCompat.setTranslationY(item.itemView, 0.0f);
dispatchChangeFinished(item, oldItem);
return true;
}
项目:Shared-Route
文件:PullRecyclerViewAdapter.java
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view;
if (viewType == TYPE_ITEM) {
if (mContext == null) {
mContext = parent.getContext();
}
view = LayoutInflater.from(mContext).inflate(R.layout.content_search_needs, parent, false);
if (orderDao == null) orderDao = new OrderDao(mContext);
final ItemViewHolder holder = new ItemViewHolder(view);
return holder;
}
else if (viewType == TYPE_FOOTER) {
view = LayoutInflater.from(mContext).inflate(R.layout.item_foot, parent,
false);
Log.e("!!!!!","111111111111");
return new FootViewHolder(view);
}
return null;
}
项目:MyAnimeViewer
文件:BaseItemAnimator.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;
}
项目:letv
文件:ViewInfoStore.java
private ItemHolderInfo popFromLayoutStep(ViewHolder vh, int flag) {
ItemHolderInfo itemHolderInfo = null;
int index = this.mLayoutHolderMap.indexOfKey(vh);
if (index >= 0) {
InfoRecord record = (InfoRecord) this.mLayoutHolderMap.valueAt(index);
if (!(record == null || (record.flags & flag) == 0)) {
record.flags &= flag ^ -1;
if (flag == 4) {
itemHolderInfo = record.preInfo;
} else if (flag == 8) {
itemHolderInfo = record.postInfo;
} else {
throw new IllegalArgumentException("Must provide flag PRE or POST");
}
if ((record.flags & 12) == 0) {
this.mLayoutHolderMap.removeAt(index);
InfoRecord.recycle(record);
}
}
}
return itemHolderInfo;
}
项目:MontageCam
文件:ColorListAdapter.java
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = null;
ViewHolder viewHolder = null;
if (viewType == TYPE_COLOR) {
v = LayoutInflater.from(parent.getContext()).inflate(
R.layout.view_color_panel, parent,false);
viewHolder = new ColorViewHolder(v);
} else if (viewType == TYPE_MORE) {
v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.view_color_more_panel,parent,false);
viewHolder = new MoreViewHolder(v);
}
return viewHolder;
}
项目:xrecyclerview
文件:RecyclerViewAdapter.java
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == ITEM_TYPE_HEADER) {
return new HeaderBottomHolder(recyclerViewHeader);
} else if (viewType == ITEM_TYPE_CONTENT) {
return adapter.onCreateViewHolder(parent, viewType);
} else if (viewType == ITEM_TYPE_BOTTOM) {
return new HeaderBottomHolder(recyclerViewFooter);
} else if (viewType == ITEM_TYPE_HEADERVIEW) {
return new HeaderBottomHolder(headerView);
} else if (viewType == ITEM_TYPE_FOOTVIEW) {
return new HeaderBottomHolder(footView);
}
return adapter.onCreateViewHolder(parent, viewType);
}
项目:boohee_v5.6
文件:ViewInfoStore.java
void process(ProcessCallback callback) {
for (int index = this.mLayoutHolderMap.size() - 1; index >= 0; index--) {
ViewHolder viewHolder = (ViewHolder) this.mLayoutHolderMap.keyAt(index);
InfoRecord record = (InfoRecord) this.mLayoutHolderMap.removeAt(index);
if ((record.flags & 3) == 3) {
callback.unused(viewHolder);
} else if ((record.flags & 1) != 0) {
if (record.preInfo == null) {
callback.unused(viewHolder);
} else {
callback.processDisappeared(viewHolder, record.preInfo, record.postInfo);
}
} else if ((record.flags & 14) == 14) {
callback.processAppeared(viewHolder, record.preInfo, record.postInfo);
} else if ((record.flags & 12) == 12) {
callback.processPersistent(viewHolder, record.preInfo, record.postInfo);
} else if ((record.flags & 4) != 0) {
callback.processDisappeared(viewHolder, record.preInfo, null);
} else if ((record.flags & 8) != 0) {
callback.processAppeared(viewHolder, record.preInfo, record.postInfo);
} else if ((record.flags & 2) != 0) {
}
InfoRecord.recycle(record);
}
}
项目:RLibrary
文件: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;
}
项目:boohee_v5.6
文件:ItemTouchHelper.java
public void onLongPress(MotionEvent e) {
View child = ItemTouchHelper.this.findChildView(e);
if (child != null) {
ViewHolder vh = ItemTouchHelper.this.mRecyclerView.getChildViewHolder(child);
if (vh != null && ItemTouchHelper.this.mCallback.hasDragFlag(ItemTouchHelper.this.mRecyclerView, vh) && MotionEventCompat.getPointerId(e, 0) == ItemTouchHelper.this.mActivePointerId) {
int index = MotionEventCompat.findPointerIndex(e, ItemTouchHelper.this.mActivePointerId);
float x = MotionEventCompat.getX(e, index);
float y = MotionEventCompat.getY(e, index);
ItemTouchHelper.this.mInitialTouchX = x;
ItemTouchHelper.this.mInitialTouchY = y;
ItemTouchHelper itemTouchHelper = ItemTouchHelper.this;
ItemTouchHelper.this.mDy = 0.0f;
itemTouchHelper.mDx = 0.0f;
if (ItemTouchHelper.this.mCallback.isLongPressDragEnabled()) {
ItemTouchHelper.this.select(vh, 2);
}
}
}
}
项目:Cable-Android
文件:CursorRecyclerViewAdapter.java
@SuppressWarnings("unchecked")
@Override
public final void onViewRecycled(ViewHolder holder) {
if (!(holder instanceof HeaderFooterViewHolder)) {
onItemViewRecycled((VH)holder);
}
}
项目:Xndroid
文件:HorizontalItemAnimator.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;
}
项目:letv
文件:ItemDragHelperCallback.java
private void callBack(OnGridItemMoveListener listener, ViewHolder viewHolder, int fromPos, ViewHolder target, int toPos, boolean addFirst, boolean isLast) {
if (isLast || addFirst) {
listener.onItemMove(fromPos, toPos, addFirst, isLast);
} else if (viewHolder.getItemViewType() == target.getItemViewType()) {
listener.onItemMove(fromPos, toPos, false, false);
}
}
项目:starcraft-2-build-player
文件:SimpleItemTouchCallback.java
/**
* If this method returns true, ItemTouchHelper assumes viewHolder has been
* moved to the adapter position of target ViewHolder
* @param recyclerView
* @param viewHolder
* @param target
* @return
*/
@Override
public boolean onMove(RecyclerView recyclerView,
ViewHolder viewHolder,
ViewHolder target) {
int toPosition = target.getAdapterPosition();
mListener.onItemMove(viewHolder.getAdapterPosition(), toPosition);
draggedTo = toPosition;
return true;
}
项目:GitHub
文件:PendingItemAnimator.java
@Override
/** Override prepHolderForAnimateRemove
*
* Called when an item is removed from the RecyclerView. Implementors can choose
* whether and how to animate that change, but must always call
* {@link #dispatchRemoveFinished(ViewHolder)} when done, either
* immediately (if no animation will occur) or after the animation actually finishes.
* The return value indicates whether an animation has been set up and whether the
* ItemAnimators {@link #runPendingAnimations()} method should be called at the
* next opportunity. This mechanism allows ItemAnimator to set up individual animations
* as separate calls to {@link #animateAdd(H) animateAdd()},
* {@link #animateMove(ViewHolder, int, int, int, int) animateMove()}, and
* {@link #animateRemove(ViewHolder) animateRemove()} come in one by one, then
* start the animations together in the later call to {@link #runPendingAnimations()}.
*
* <p>This method may also be called for disappearing items which continue to exist in the
* RecyclerView, but for which the system does not have enough information to animate
* them out of view. In that case, the default animation for removing items is run
* on those items as well.</p>
*
* @param holder The item that is being removed.
* @return true if a later call to {@link #runPendingAnimations()} is requested,
* false otherwise.
*/
public boolean animateRemove(final ViewHolder holder) {
mPendingRemovals.add((H) holder);
return prepHolderForAnimateRemove((H) holder);
}
项目:MyAnimeViewer
文件:BaseItemAnimator.java
private void preAnimateAdd(final RecyclerView.ViewHolder holder) {
clear(holder.itemView);
if (holder instanceof AnimateViewHolder) {
((AnimateViewHolder) holder).preAnimateAddImpl();
} else {
preAnimateAddImpl(holder);
}
}
项目:Cable-Android
文件:CursorRecyclerViewAdapter.java
@Override
public final ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch (viewType) {
case HEADER_TYPE: return new HeaderFooterViewHolder(header);
case FOOTER_TYPE: return new HeaderFooterViewHolder(footer);
default: return onCreateItemViewHolder(parent, viewType);
}
}
项目:Xndroid
文件:HorizontalItemAnimator.java
@Override
public boolean animateAdd(final ViewHolder holder) {
resetAnimation(holder);
ViewCompat.setAlpha(holder.itemView, 0);
ViewCompat.setTranslationY(holder.itemView, holder.itemView.getHeight());
mPendingAdditions.add(holder);
return true;
}
项目:letv
文件:ItemTouchHelper.java
public void startDrag(ViewHolder viewHolder) {
if (!this.mCallback.hasDragFlag(this.mRecyclerView, viewHolder)) {
Log.e(TAG, "Start drag has been called but swiping is not enabled");
} else if (viewHolder.itemView.getParent() != this.mRecyclerView) {
Log.e(TAG, "Start drag has been called with a view holder which is not a child of the RecyclerView which is controlled by this ItemTouchHelper.");
} else {
obtainVelocityTracker();
this.mDy = 0.0f;
this.mDx = 0.0f;
select(viewHolder, 2);
}
}
项目:GitHub
文件:FlexibleItemAnimator.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;
}
项目:RLibrary
文件:BaseItemAnimator.java
private void preAnimateRemove(final ViewHolder holder) {
ViewHelper.clear(holder.itemView);
if (holder instanceof AnimateViewHolder) {
((AnimateViewHolder) holder).preAnimateRemoveImpl();
} else {
preAnimateRemoveImpl(holder);
}
}
项目:Xndroid
文件:HorizontalItemAnimator.java
private void endChangeAnimation(List<ChangeInfo> infoList, ViewHolder item) {
for (int i = infoList.size() - 1; i >= 0; i--) {
ChangeInfo changeInfo = infoList.get(i);
if (endChangeAnimationIfNecessary(changeInfo, item)) {
if (changeInfo.oldHolder == null && changeInfo.newHolder == null) {
infoList.remove(changeInfo);
}
}
}
}
项目:boohee_v5.6
文件:ItemTouchHelper.java
private int endRecoverAnimation(ViewHolder viewHolder, boolean override) {
for (int i = this.mRecoverAnimations.size() - 1; i >= 0; i--) {
RecoverAnimation anim = (RecoverAnimation) this.mRecoverAnimations.get(i);
if (anim.mViewHolder == viewHolder) {
anim.mOverridden |= override;
if (!anim.mEnded) {
anim.cancel();
}
this.mRecoverAnimations.remove(i);
return anim.mAnimationType;
}
}
return 0;
}
项目:GitHub
文件:FlexibleItemAnimator.java
private void runAddAnimation(boolean removalsPending, boolean changesPending,
boolean movesPending, boolean additionsPending) {
if (additionsPending) {
final ArrayList<ViewHolder> additions = new ArrayList<>();
// Sorting addition animations based on it's original layout position
Collections.sort(mPendingAdditions, new Comparator<ViewHolder>() {
@Override
public int compare(ViewHolder vh1, ViewHolder vh2) {
return vh1.getLayoutPosition() - vh2.getLayoutPosition();
}
});
additions.addAll(mPendingAdditions);
mAdditionsList.add(additions);
mPendingAdditions.clear();
Runnable adder = new Runnable() {
public void run() {
int index = 0;
for (ViewHolder holder : additions) {
doAnimateAdd(holder, index++);
}
additions.clear();
mAdditionsList.remove(additions);
}
};
if (removalsPending || movesPending || changesPending) {
long removeDuration = removalsPending ? getRemoveDuration() : 0;
long moveDuration = movesPending ? getMoveDuration() : 0;
long changeDuration = changesPending ? getChangeDuration() : 0;
long totalDelay = removeDuration + Math.max(moveDuration, changeDuration);
View view = additions.get(0).itemView;
ViewCompat.postOnAnimationDelayed(view, adder, totalDelay);
} else {
adder.run();
}
}
}
项目:RLibrary
文件:RDragCallback.java
@Override
public void onChildDrawOver(Canvas c, RecyclerView recyclerView, ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
super.onChildDrawOver(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
// L.e("call: onChildDrawOver([c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive])-> " + actionState + " " + isCurrentlyActive + " " + viewHolder, 300);
if (drawOverInFullscreen && viewHolder.getAdapterPosition() >= 0) {
//L.e("call: onChildDrawOver([c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive])-> dx:" + dX + " dy:" + dY + " " + actionState + " " + isCurrentlyActive);
c.save();
c.getClipBounds(clipBounds);
clipBounds.inset(-ScreenUtil.screenWidth, -ScreenUtil.screenHeight);
c.clipRect(clipBounds, Region.Op.REPLACE);
c.translate(viewHolder.itemView.getLeft() + dX, viewHolder.itemView.getTop() + dY);
viewHolder.itemView.draw(c);
c.restore();
}
}
项目:MyAnimeViewer
文件: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;
}
项目:boohee_v5.6
文件:ItemTouchHelper.java
public void startSwipe(ViewHolder viewHolder) {
if (!this.mCallback.hasSwipeFlag(this.mRecyclerView, viewHolder)) {
Log.e(TAG, "Start swipe has been called but dragging is not enabled");
} else if (viewHolder.itemView.getParent() != this.mRecyclerView) {
Log.e(TAG, "Start swipe has been called with a view holder which is not a child of the RecyclerView controlled by this ItemTouchHelper.");
} else {
obtainVelocityTracker();
this.mDy = 0.0f;
this.mDx = 0.0f;
select(viewHolder, 1);
}
}
项目:letv
文件:LinearLayoutManager.java
private View nextViewFromScrapList() {
int size = this.mScrapList.size();
for (int i = 0; i < size; i++) {
View view = ((ViewHolder) this.mScrapList.get(i)).itemView;
LayoutParams lp = (LayoutParams) view.getLayoutParams();
if (!lp.isItemRemoved() && this.mCurrentPosition == lp.getViewLayoutPosition()) {
assignPositionFromScrapList(view);
return view;
}
}
return null;
}
项目:GitHub
文件:SuperAdapter.java
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
if (holder != null) {
baseHolder = (SuperItemHolder) holder;
baseHolder.setPosition(position);
baseHolder.setData(mDatas.get(position), countPosition(position));
}
}
项目:GitHub
文件:MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView giphyLogoView = (ImageView) findViewById(R.id.giphy_logo_view);
GlideApp.with(this)
.load(R.raw.large_giphy_logo)
.into(giphyLogoView);
RecyclerView gifList = (RecyclerView) findViewById(R.id.gif_list);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
gifList.setLayoutManager(layoutManager);
RequestBuilder<Drawable> gifItemRequest = GlideApp.with(this)
.asDrawable();
ViewPreloadSizeProvider<Api.GifResult> preloadSizeProvider =
new ViewPreloadSizeProvider<>();
adapter = new GifAdapter(this, gifItemRequest, preloadSizeProvider);
gifList.setAdapter(adapter);
RecyclerViewPreloader<Api.GifResult> preloader =
new RecyclerViewPreloader<>(GlideApp.with(this), adapter, preloadSizeProvider, 4);
gifList.addOnScrollListener(preloader);
gifList.setRecyclerListener(new RecyclerListener() {
@Override
public void onViewRecycled(ViewHolder holder) {
// This is an optimization to reduce the memory usage of RecyclerView's recycled view pool
// and good practice when using Glide with RecyclerView.
GifViewHolder gifViewHolder = (GifViewHolder) holder;
GlideApp.with(MainActivity.this).clear(gifViewHolder.gifView);
}
});
}
项目:boohee_v5.6
文件:ItemTouchHelper.java
public void onChildViewDetachedFromWindow(View view) {
removeChildDrawingOrderCallbackIfNecessary(view);
ViewHolder holder = this.mRecyclerView.getChildViewHolder(view);
if (holder != null) {
if (this.mSelected == null || holder != this.mSelected) {
endRecoverAnimation(holder, false);
if (this.mPendingCleanup.remove(holder.itemView)) {
this.mCallback.clearView(this.mRecyclerView, holder);
return;
}
return;
}
select(null, 0);
}
}
项目:chromium-for-android-56-debug-video
文件:NewTabPageAdapter.java
/**
* Returns another view holder that should be dismissed at the same time as the provided one.
*/
public ViewHolder getDismissSibling(ViewHolder viewHolder) {
int swipePos = viewHolder.getAdapterPosition();
int siblingPosDelta = mRoot.getDismissSiblingPosDelta(swipePos);
if (siblingPosDelta == 0) return null;
return mRecyclerView.findViewHolderForAdapterPosition(siblingPosDelta + swipePos);
}
项目:MontageCam
文件:ColorListAdapter.java
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
int type = getItemViewType(position);
if(type == TYPE_COLOR){
onBindColorViewHolder((ColorViewHolder)holder,position);
}else if(type == TYPE_MORE){
onBindColorMoreViewHolder((MoreViewHolder)holder,position);
}
}
项目:letv
文件:ItemTouchHelper.java
public void onChildViewDetachedFromWindow(View view) {
removeChildDrawingOrderCallbackIfNecessary(view);
ViewHolder holder = this.mRecyclerView.getChildViewHolder(view);
if (holder != null) {
if (this.mSelected == null || holder != this.mSelected) {
endRecoverAnimation(holder, false);
if (this.mPendingCleanup.remove(holder.itemView)) {
this.mCallback.clearView(this.mRecyclerView, holder);
return;
}
return;
}
select(null, 0);
}
}
项目:PeSanKita-android
文件:CursorRecyclerViewAdapter.java
@Override
public final ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch (viewType) {
case HEADER_TYPE: return new HeaderFooterViewHolder(header);
case FOOTER_TYPE: return new HeaderFooterViewHolder(footer);
default: return onCreateItemViewHolder(parent, viewType);
}
}
项目:PeSanKita-android
文件:StickyHeaderDecoration.java
protected ViewHolder getHeader(RecyclerView parent, StickyHeaderAdapter adapter, int position) {
final long key = adapter.getHeaderId(position);
if (headerCache.containsKey(key)) {
return headerCache.get(key);
} else {
final ViewHolder holder = adapter.onCreateHeaderViewHolder(parent);
final View header = holder.itemView;
//noinspection unchecked
adapter.onBindHeaderViewHolder(holder, position);
int widthSpec = View.MeasureSpec.makeMeasureSpec(parent.getWidth(), View.MeasureSpec.EXACTLY);
int heightSpec = View.MeasureSpec.makeMeasureSpec(parent.getHeight(), View.MeasureSpec.UNSPECIFIED);
int childWidth = ViewGroup.getChildMeasureSpec(widthSpec,
parent.getPaddingLeft() + parent.getPaddingRight(), header.getLayoutParams().width);
int childHeight = ViewGroup.getChildMeasureSpec(heightSpec,
parent.getPaddingTop() + parent.getPaddingBottom(), header.getLayoutParams().height);
header.measure(childWidth, childHeight);
header.layout(0, 0, header.getMeasuredWidth(), header.getMeasuredHeight());
headerCache.put(key, holder);
return holder;
}
}
项目:boohee_v5.6
文件:SimpleItemAnimator.java
public boolean animateChange(@NonNull ViewHolder oldHolder, @NonNull ViewHolder newHolder, @NonNull ItemHolderInfo preInfo, @NonNull ItemHolderInfo postInfo) {
int toLeft;
int toTop;
int fromLeft = preInfo.left;
int fromTop = preInfo.top;
if (newHolder.shouldIgnore()) {
toLeft = preInfo.left;
toTop = preInfo.top;
} else {
toLeft = postInfo.left;
toTop = postInfo.top;
}
return animateChange(oldHolder, newHolder, fromLeft, fromTop, toLeft, toTop);
}
项目:KUtils
文件:SuperAdapter.java
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
if (holder != null) {
baseHolder = (SuperItemHolder) holder;
baseHolder.setPosition(position);
baseHolder.setData(mDatas.get(position));
}
}
项目: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;
}
项目:boohee_v5.6
文件:PPRecyclerAdapter.java
public void onBindViewHolder(ViewHolder holder, int position) {
PPModel model = (PPModel) this.mDatas.get(position);
if (holder != null && model != null) {
if (model.type() == ItemType.TYPE_HEADER) {
onBindHeaderView(holder, position);
} else if (model.type() == ItemType.TYPE_FOOTER) {
onBindFooterView(holder, position);
} else {
onBindItemView(holder, position);
}
}
}