From 85092fb4ae1bb292e276d97ff80bce1aaf89433f Mon Sep 17 00:00:00 2001 From: Stanisalv Date: Wed, 26 Aug 2020 19:05:58 +0300 Subject: [PATCH] formatting GroupItemDecoration formatting GroupItemDecoration --- .../decorators/GroupItemDecoration.kt | 50 +++++++++++-------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/recyclerview-adapters/src/main/java/ru/touchin/roboswag/recyclerview_adapters/decorators/GroupItemDecoration.kt b/recyclerview-adapters/src/main/java/ru/touchin/roboswag/recyclerview_adapters/decorators/GroupItemDecoration.kt index 38a26a9..67470b0 100644 --- a/recyclerview-adapters/src/main/java/ru/touchin/roboswag/recyclerview_adapters/decorators/GroupItemDecoration.kt +++ b/recyclerview-adapters/src/main/java/ru/touchin/roboswag/recyclerview_adapters/decorators/GroupItemDecoration.kt @@ -39,12 +39,7 @@ class GroupItemDecoration( when { predicate(adapterPosition) -> { if (groupView != null) { - val layoutParams = groupView.layoutParams as ViewGroup.MarginLayoutParams - parent.getDecoratedBoundsWithMargins(child, bounds) - canvas.save() - translateCanvasByOrientation(canvas, parent, layoutParams) - groupView.draw(canvas) - canvas.restore() + onDrawGroupView(groupView, parent, child, canvas) } else { isInvalidated = true break@loop @@ -76,6 +71,15 @@ class GroupItemDecoration( } } + private fun onDrawGroupView(groupView: View, parent: RecyclerView, child: View, canvas: Canvas) { + val layoutParams = groupView.layoutParams as ViewGroup.MarginLayoutParams + parent.getDecoratedBoundsWithMargins(child, bounds) + canvas.save() + translateCanvasByOrientation(canvas, parent, layoutParams) + groupView.draw(canvas) + canvas.restore() + } + private fun translateCanvasByOrientation(canvas: Canvas, parent: RecyclerView, layoutParams: ViewGroup.MarginLayoutParams) { when (orientation) { RecyclerView.VERTICAL -> canvas.translate(parent.paddingLeft.toFloat() + layoutParams.leftMargin, bounds.top.toFloat()) @@ -83,24 +87,28 @@ class GroupItemDecoration( } } - private fun obtainViewHolder(adapterPosition: Int, parent: RecyclerView) = viewHoldersPool[adapterPosition] + private fun obtainViewHolder(adapterPosition: Int, parent: RecyclerView): TViewHolder = viewHoldersPool[adapterPosition] ?: onCreateViewHolder(parent).also { viewHoldersPool[adapterPosition] = it } - private fun getHeightChildMeasureSpec(parent: RecyclerView, layoutParams: ViewGroup.MarginLayoutParams, groupView: View): Int { - return ViewGroup.getChildMeasureSpec( - View.MeasureSpec.makeMeasureSpec(parent.measuredHeight, View.MeasureSpec.EXACTLY), - parent.paddingTop + parent.paddingBottom + layoutParams.topMargin + layoutParams.bottomMargin, - groupView.layoutParams.height - ) - } + private fun getHeightChildMeasureSpec( + parent: RecyclerView, + layoutParams: ViewGroup.MarginLayoutParams, + groupView: View + ): Int = ViewGroup.getChildMeasureSpec( + View.MeasureSpec.makeMeasureSpec(parent.measuredHeight, View.MeasureSpec.EXACTLY), + parent.paddingTop + parent.paddingBottom + layoutParams.topMargin + layoutParams.bottomMargin, + groupView.layoutParams.height + ) - private fun getWidthChildMeasureSpec(parent: RecyclerView, layoutParams: ViewGroup.MarginLayoutParams, groupView: View): Int { - return ViewGroup.getChildMeasureSpec( - View.MeasureSpec.makeMeasureSpec(parent.measuredWidth, View.MeasureSpec.EXACTLY), - parent.paddingLeft + parent.paddingRight + layoutParams.leftMargin + layoutParams.rightMargin, - groupView.layoutParams.width - ) - } + private fun getWidthChildMeasureSpec( + parent: RecyclerView, + layoutParams: ViewGroup.MarginLayoutParams, + groupView: View + ): Int = ViewGroup.getChildMeasureSpec( + View.MeasureSpec.makeMeasureSpec(parent.measuredWidth, View.MeasureSpec.EXACTLY), + parent.paddingLeft + parent.paddingRight + layoutParams.leftMargin + layoutParams.rightMargin, + groupView.layoutParams.width + ) open class ViewHolder(val view: View) { fun findViewById(@IdRes resId: Int): T = view.findViewById(resId)