Skip to content

Commit

Permalink
[ContentListing] - Use that new class to late-initialize dimensions
Browse files Browse the repository at this point in the history
  • Loading branch information
Cliabhach committed Oct 28, 2018
1 parent b3879d9 commit 94e6ce4
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 14 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package edu.artic.decoration

import android.content.Context
import android.content.res.Resources
import android.graphics.Rect
import android.support.v7.widget.RecyclerView
import android.view.View
Expand All @@ -16,19 +17,30 @@ import edu.artic.events.EventCellViewModel
*/
class AllEventsItemDecoration(
context: Context,
private val spanCount: Int,
override val spanCount: Int,
private val adapter: AllEventsAdapter
) : RecyclerView.ItemDecoration() {
private val horizontalSpacing: Int = context.resources.getDimensionPixelOffset(R.dimen.all_tour_cell_spacing_horizontal)
private val verticalSpacing: Int = context.resources.getDimensionPixelOffset(R.dimen.all_tour_cell_spacing_vertical)
private val headerVerticalSpacing: Int = context.resources.getDimensionPixelOffset(R.dimen.all_tour_cell_spacing_vertical_header)
) : GridItemDecoration(spanCount) {

override fun createDimensions(res: Resources): Dimensions {
return object : Dimensions {
override val horizontal: Int = res.getDimensionPixelOffset(R.dimen.all_tour_cell_spacing_horizontal)
override val vertical: Int = res.getDimensionPixelOffset(R.dimen.all_tour_cell_spacing_vertical)
override val topMostVertical: Int = res.getDimensionPixelOffset(R.dimen.all_tour_cell_spacing_vertical_header)
}
}

override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) {
super.getItemOffsets(outRect, view, parent, state)

val horizontalSpacing = dimensions.horizontal
val verticalSpacing = dimensions.vertical
val headerVerticalSpacing = dimensions.topMostVertical

// item position
val position = parent.getChildAdapterPosition(view)
adapter.getItemOrNull(position)?.let {

val halfOfVertical = (verticalSpacing / 2.0f).toInt()
val halfOfVertical = dimensions.halfOfVertical()

when (it) {
is AllEventsCellHeaderViewModel -> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package edu.artic.decoration

import android.content.Context
import android.content.res.Resources
import android.graphics.Rect
import android.support.v7.widget.RecyclerView
import android.view.View
Expand All @@ -13,12 +14,23 @@ import edu.artic.content.listing.R
*/
class AllExhibitionsItemDecoration(
context: Context,
private val spanCount: Int
) : RecyclerView.ItemDecoration() {
private val horizontalSpacing: Int = context.resources.getDimensionPixelSize(R.dimen.all_exhibitions_cell_spacing_horizontal)
private val verticalSpacing: Int = context.resources.getDimensionPixelSize(R.dimen.all_exhibitions_cell_spacing_vertical)
override val spanCount: Int
) : GridItemDecoration(spanCount) {

override fun createDimensions(res: Resources): Dimensions {
return object : Dimensions {
override val horizontal: Int = res.getDimensionPixelSize(R.dimen.all_exhibitions_cell_spacing_horizontal)
override val vertical: Int = res.getDimensionPixelSize(R.dimen.all_exhibitions_cell_spacing_vertical)
override val topMostVertical: Int = vertical
}
}

override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) {
super.getItemOffsets(outRect, view, parent, state)

val horizontalSpacing = dimensions.horizontal
val verticalSpacing = dimensions.vertical

val adjustedPos = parent.getChildAdapterPosition(view) - 1 // item position, minus 1 for the header
val column = (adjustedPos) % spanCount // item column

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package edu.artic.decoration

import android.content.Context
import android.content.res.Resources
import android.graphics.Rect
import android.support.v7.widget.RecyclerView
import android.view.View
Expand All @@ -13,12 +14,23 @@ import edu.artic.content.listing.R
*/
class AllToursItemDecoration(
context: Context,
private val spanCount: Int
) : RecyclerView.ItemDecoration() {
private val horizontalSpacing: Int = context.resources.getDimensionPixelSize(R.dimen.all_tour_cell_spacing_horizontal)
private val verticalSpacing: Int = context.resources.getDimensionPixelSize(R.dimen.all_tour_cell_spacing_vertical)
override val spanCount: Int
) : GridItemDecoration(spanCount) {

override fun createDimensions(res: Resources): Dimensions {
return object : Dimensions {
override val horizontal: Int = res.getDimensionPixelSize(R.dimen.all_tour_cell_spacing_horizontal)
override val vertical: Int = res.getDimensionPixelSize(R.dimen.all_tour_cell_spacing_vertical)
override val topMostVertical: Int = vertical
}
}

override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) {
super.getItemOffsets(outRect, view, parent, state)

val horizontalSpacing = dimensions.horizontal
val verticalSpacing = dimensions.vertical

val adjustedPos = parent.getChildAdapterPosition(view) - 1 // item position, minus 1 for the header
if (adjustedPos < 0) {
outRect.setEmpty()
Expand Down

0 comments on commit 94e6ce4

Please sign in to comment.