androidx.recyclerview.widget.RecyclerView#getChildLayoutPosition ( )源码实例Demo

下面列出了androidx.recyclerview.widget.RecyclerView#getChildLayoutPosition ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

@Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, State state) {
        super.getItemOffsets(outRect, view, parent, state);
        int itemPosition = parent.getChildLayoutPosition(view);
        int spanCount = getSpanCount(parent);
        int childCount = parent.getAdapter().getItemCount();
//        if (isLastRaw(parent, itemPosition, spanCount, childCount))// 如果是最后一行,则不需要绘制底部
//        {
//            outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0);
//        }
        if (isLastColumn(parent, itemPosition, spanCount, childCount))// 如果是最后一列,则不需要绘制右边
        {
            outRect.set(0, 0, 0, mDivider.getIntrinsicHeight());
        } else {
            outRect.set(0, 0, mDivider.getIntrinsicWidth(),
                    mDivider.getIntrinsicHeight());
        }
    }
 
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
    if (dividerDrawable == null) {
        return;
    }

    if (parent.getChildLayoutPosition(view) < 1) {
        return;
    }

    if (orientation == LinearLayoutManager.VERTICAL) {
        outRect.top = dividerDrawable.getIntrinsicHeight();
    } else if (orientation == LinearLayoutManager.HORIZONTAL) {
        outRect.left = dividerDrawable.getIntrinsicWidth();
    }
}
 
源代码3 项目: SwipeRecyclerView   文件: DefaultItemDecoration.java
@Override
public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent,
    @NonNull RecyclerView.State state) {
    RecyclerView.LayoutManager layoutManager = parent.getLayoutManager();
    if (layoutManager instanceof LinearLayoutManager) {
        int orientation = getOrientation(layoutManager);
        int position = parent.getChildLayoutPosition(view);
        int spanCount = getSpanCount(layoutManager);
        int childCount = layoutManager.getItemCount();

        if (orientation == RecyclerView.VERTICAL) {
            offsetVertical(outRect, position, spanCount, childCount);
        } else {
            offsetHorizontal(outRect, position, spanCount, childCount);
        }
    } else if (layoutManager instanceof StaggeredGridLayoutManager) {
        outRect.set(mWidth, mHeight, mWidth, mHeight); // |-|-
    }
}
 
源代码4 项目: CarouselView   文件: CarouselItemDecoration.java
@Override
public void getItemOffsets(@NonNull final Rect outRect, @NonNull final View view, @NonNull final RecyclerView parent, @NonNull final RecyclerView.State state) {
  super.getItemOffsets(outRect, view, parent, state);

  outRect.right = this.width > 0 ? this.spacing / 2 : this.spacing;
  outRect.left = this.width > 0 ? this.spacing / 2 : 0;

  if ((state.getItemCount() - 1 == parent.getChildLayoutPosition(view))) {
    outRect.right = this.width > 0 ? ((parent.getMeasuredWidth() / 2) - (this.width / 2)) : 0;
  }
  if (parent.getChildLayoutPosition(view) == 0) {
    outRect.left = this.width > 0 ? ((parent.getMeasuredWidth() / 2) - (this.width / 2)) : 0;
  }
}
 
源代码5 项目: NewFastFrame   文件: OnLoadMoreScrollListener.java
public boolean canTriggerLoadMore(RecyclerView recyclerView) {
    View lastChild = recyclerView.getChildAt(recyclerView.getChildCount() - 1);
    int position = recyclerView.getChildLayoutPosition(lastChild);
    RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
    int totalItemCount = layoutManager.getItemCount();
    return totalItemCount - 1 == position;
}
 
源代码6 项目: revolution-irc   文件: SpacingItemDecorator.java
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent,
                           RecyclerView.State state) {
    if (parent.getChildLayoutPosition(view) != 0) {
        if (ViewCompat.getLayoutDirection(parent) ==
                ViewCompat.LAYOUT_DIRECTION_RTL)
            outRect.right += spacing;
        else
            outRect.left += spacing;
    }
}
 
源代码7 项目: QuickDevFramework   文件: HorizontalDecoration.java
@Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
//        super.getItemOffsets(outRect, view, parent, state);
        int top = 0;
        if(parent.getChildLayoutPosition(view) == 0) {
            top = dividerSize;
        }
        outRect.set(0, top, 0, dividerSize);
    }
 
@Override
public void smoothScrollToPosition(RecyclerView recyclerView, RecyclerView.State state, int position) {
    View firstVisibleChild = recyclerView.getChildAt(0);
    int itemHeight = firstVisibleChild.getHeight();
    int currentPosition = recyclerView.getChildLayoutPosition(firstVisibleChild);
    int distanceInPixels = Math.abs((currentPosition - position) * itemHeight);
    if (distanceInPixels == 0) {
        distanceInPixels = (int) Math.abs(firstVisibleChild.getY());
    }
    SmoothScroller smoothScroller = new SmoothScroller(recyclerView.getContext(), distanceInPixels, duration);
    smoothScroller.setTargetPosition(position);
    startSmoothScroll(smoothScroller);
}
 
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
    super.getItemOffsets(outRect, view, parent, state);
    int value = (parent.getChildLayoutPosition(view) < mNumberOfChildren) ? mHeaderHeight : 0;
    if (mReversed) {
        outRect.bottom = value;
    } else {
        outRect.top = value;
    }
}
 
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
    int itemPosition = parent.getChildLayoutPosition(view);
    int col = itemPosition % span;
    outRect.top = itemPosition < span ? 0 : dividerWidth;
    outRect.bottom = 0;
    outRect.right = col < span - 1 ? dividerWidth / 2 : 0;
    outRect.left = col > 0 ? dividerWidth / 2 : 0;
}
 
源代码11 项目: QuickDevFramework   文件: EquidistantDecoration.java
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
    int position = parent.getChildLayoutPosition(view);
    int[] rect = getItemOffsetRect(position, state.getItemCount());
    outRect.set(rect[0], rect[1], rect[2], rect[3]);
}
 
private boolean hasDivider(RecyclerView parent, View child) {
    int position = parent.getChildLayoutPosition(child);
    return position != RecyclerView.NO_POSITION && (mDividers == null || mDividers.hasDivider(position));
}