Skip to content

Commit

Permalink
🚀fix RecyclerView Adapter
Browse files Browse the repository at this point in the history
  • Loading branch information
ohmae committed Nov 19, 2022
1 parent 0753779 commit d0bd681
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 34 deletions.
10 changes: 1 addition & 9 deletions lib/src/main/java/net/mm2d/color/chooser/ColorChooserView.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ package net.mm2d.color.chooser
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.graphics.alpha
import androidx.core.view.doOnLayout
Expand Down Expand Up @@ -47,14 +46,7 @@ internal class ColorChooserView
else -> "rgb"
}
}
val pageViews: List<View> = distinctTabs.map {
when (it) {
TAB_PALETTE -> PaletteView(context)
TAB_HSV -> HsvView(context)
else -> SliderView(context)
}
}
binding.viewPager.adapter = ViewPagerAdapter(pageViews)
binding.viewPager.adapter = ViewPagerAdapter(context, tabs)
TabLayoutMediator(binding.tabLayout, binding.viewPager) { tab, position ->
tab.text = pageTitles[position]
}.attach()
Expand Down
48 changes: 23 additions & 25 deletions lib/src/main/java/net/mm2d/color/chooser/ViewPagerAdapter.kt
Original file line number Diff line number Diff line change
@@ -1,35 +1,33 @@
/*
* Copyright (c) 2018 大前良介 (OHMAE Ryosuke)
*
* This software is released under the MIT License.
* http://opensource.org/licenses/MIT
*/

package net.mm2d.color.chooser

import android.content.Context
import android.view.View
import android.view.ViewGroup
import androidx.constraintlayout.widget.ConstraintLayout.LayoutParams
import androidx.core.view.ViewCompat
import androidx.recyclerview.widget.RecyclerView
import net.mm2d.color.chooser.ViewPagerAdapter.ViewHolder

internal class ViewPagerAdapter(
pageViews: List<View>
) : RecyclerView.Adapter<ViewHolder>() {
private val pageViews = pageViews.toList().onEach {
it.id = ViewCompat.generateViewId()
it.layoutParams = RecyclerView.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT
class ViewPagerAdapter(
private val context: Context,
private val tabs: IntArray,
) : RecyclerView.Adapter<PageViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PageViewHolder =
PageViewHolder(
when (viewType) {
ColorChooserDialog.TAB_PALETTE -> PaletteView(context)
ColorChooserDialog.TAB_HSV -> HsvView(context)
else -> SliderView(context)
}.also {
it.id = ViewCompat.generateViewId()
it.layoutParams = RecyclerView.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT
)
}
)
}

class ViewHolder(val view: View) : RecyclerView.ViewHolder(view)

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder =
ViewHolder(pageViews[viewType])

override fun onBindViewHolder(holder: ViewHolder, position: Int) = Unit
override fun getItemViewType(position: Int): Int = position
override fun getItemCount(): Int = pageViews.size
override fun onBindViewHolder(holder: PageViewHolder, position: Int) = Unit
override fun getItemViewType(position: Int): Int = tabs[position]
override fun getItemCount(): Int = tabs.size
}

class PageViewHolder(view: View) : RecyclerView.ViewHolder(view)

0 comments on commit d0bd681

Please sign in to comment.