Bottom sheet refactoring

hh
Laurent 6 years ago
parent ee9a335f22
commit d8af6e9aaa
  1. 16
      app/src/main/java/net/pokeranalytics/android/ui/adapter/ComparisonChartPagerAdapter.kt
  2. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/SubscriptionFragment.kt
  3. 3
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetDoubleEditTextFragment.kt
  4. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetEditTextFragment.kt
  5. 60
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetFragment.kt
  6. 8
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListFragment.kt
  7. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListGameFragment.kt
  8. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetMultiSelectionFragment.kt
  9. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetNumericTextFragment.kt
  10. 8
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetStaticListFragment.kt
  11. 6
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetSumFragment.kt
  12. 6
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetTableSizeGridFragment.kt
  13. 48
      app/src/main/java/net/pokeranalytics/android/ui/viewmodel/BottomSheetViewModel.kt
  14. 2
      build.gradle

@ -15,9 +15,9 @@ import java.lang.ref.WeakReference
/** /**
* Comparison Chart Pager Adapter * Comparison Chart Pager Adapter
*/ */
class ComparisonChartPagerAdapter(val context: Context, fragmentManager: FragmentManager) : FragmentStatePagerAdapter(fragmentManager) { class ComparisonChartPagerAdapter(val context: Context, fragmentManager: FragmentManager) : FragmentStatePagerAdapter(fragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
var weakReferences = SparseArray<WeakReference<BaseFragment>>() private var weakReferences = SparseArray<WeakReference<BaseFragment>>()
override fun getItem(position: Int): BaseFragment { override fun getItem(position: Int): BaseFragment {
return when (position) { return when (position) {
@ -59,11 +59,11 @@ class ComparisonChartPagerAdapter(val context: Context, fragmentManager: Fragmen
/** /**
* Return the fragment at the position key * Return the fragment at the position key
*/ */
fun getFragment(key: Int): BaseFragment? { // fun getFragment(key: Int): BaseFragment? {
if (weakReferences.get(key) != null) { // if (weakReferences.get(key) != null) {
return weakReferences.get(key).get() // return weakReferences.get(key).get()
} // }
return null // return null
} // }
} }

@ -156,7 +156,7 @@ class SubscriptionFragment : BaseFragment(), SkuDetailsResponseListener, Purchas
* A simple pager adapter that represents 5 ScreenSlidePageFragment objects, in * A simple pager adapter that represents 5 ScreenSlidePageFragment objects, in
* sequence. * sequence.
*/ */
private inner class ScreenSlidePagerAdapter(fm: FragmentManager) : FragmentStatePagerAdapter(fm) { private inner class ScreenSlidePagerAdapter(fragmentManager: FragmentManager) : FragmentStatePagerAdapter(fragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
private var fragments: HashMap<Int, WeakReference<ScreenSlidePageFragment>> = HashMap() private var fragments: HashMap<Int, WeakReference<ScreenSlidePageFragment>> = HashMap()

@ -96,10 +96,9 @@ class BottomSheetDoubleEditTextFragment : BottomSheetFragment() {
} }
} }
editText2.setOnEditorActionListener { _, actionId, _ -> editText2.setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_DONE) { if (actionId == EditorInfo.IME_ACTION_DONE) {
this.viewModel.onRowValueChanged() this.onRowValueChanged()
// this.delegate.onRowValueChanged(values, row) // this.delegate.onRowValueChanged(values, row)
dismiss() dismiss()
true true

@ -52,7 +52,7 @@ class BottomSheetEditTextFragment : BottomSheetFragment() {
editText.setOnEditorActionListener { _, actionId, _ -> editText.setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_DONE) { if (actionId == EditorInfo.IME_ACTION_DONE) {
this.viewModel.onRowValueChanged() this.onRowValueChanged()
// delegate.onRowValueChanged(getValue(), row) // delegate.onRowValueChanged(getValue(), row)
dismiss() dismiss()
true true

@ -19,6 +19,7 @@ import net.pokeranalytics.android.exceptions.PAIllegalStateException
import net.pokeranalytics.android.model.LiveData import net.pokeranalytics.android.model.LiveData
import net.pokeranalytics.android.ui.activity.EditableDataActivity import net.pokeranalytics.android.ui.activity.EditableDataActivity
import net.pokeranalytics.android.ui.activity.components.BaseActivity import net.pokeranalytics.android.ui.activity.components.BaseActivity
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor
@ -35,9 +36,7 @@ class BottomSheetConfig(var row: RowRepresentable,
var isDeletable: Boolean? = false, var isDeletable: Boolean? = false,
var valueHasPlaceholder: Boolean? = null, var valueHasPlaceholder: Boolean? = null,
var alternativeLabels: Boolean = false var alternativeLabels: Boolean = false
) { )
}
open class BottomSheetFragment : BottomSheetDialogFragment() { open class BottomSheetFragment : BottomSheetDialogFragment() {
@ -48,6 +47,10 @@ open class BottomSheetFragment : BottomSheetDialogFragment() {
ViewModelProviders.of(this).get(BottomSheetViewModel::class.java) ViewModelProviders.of(this).get(BottomSheetViewModel::class.java)
} }
private var delegate: RowRepresentableDelegate? = null
protected lateinit var dataAdapter: RowRepresentableAdapter
companion object { companion object {
private var config: BottomSheetConfig? = null private var config: BottomSheetConfig? = null
@ -111,7 +114,6 @@ open class BottomSheetFragment : BottomSheetDialogFragment() {
private fun configure(configuration: BottomSheetConfig) { private fun configure(configuration: BottomSheetConfig) {
this.viewModel.row = configuration.row this.viewModel.row = configuration.row
this.viewModel.delegate = configuration.delegate
this.viewModel.rowRepresentableEditDescriptors = configuration.rowRepresentableEditDescriptors this.viewModel.rowRepresentableEditDescriptors = configuration.rowRepresentableEditDescriptors
this.viewModel.isClearable = configuration.isClearable ?: true this.viewModel.isClearable = configuration.isClearable ?: true
this.viewModel.currentCurrency = configuration.currentCurrency this.viewModel.currentCurrency = configuration.currentCurrency
@ -119,6 +121,8 @@ open class BottomSheetFragment : BottomSheetDialogFragment() {
this.viewModel.valueAsPlaceholder = configuration.valueHasPlaceholder ?: false this.viewModel.valueAsPlaceholder = configuration.valueHasPlaceholder ?: false
this.viewModel.alternativeLabels = configuration.alternativeLabels this.viewModel.alternativeLabels = configuration.alternativeLabels
this.delegate = configuration.delegate
} }
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
@ -132,7 +136,7 @@ open class BottomSheetFragment : BottomSheetDialogFragment() {
val pokerAnalyticsActivity = activity as BaseActivity val pokerAnalyticsActivity = activity as BaseActivity
val liveDataType = LiveData.values()[dataType] val liveDataType = LiveData.values()[dataType]
this.viewModel.addedData = liveDataType.getData(pokerAnalyticsActivity.getRealm(), primaryKey) this.viewModel.addedData = liveDataType.getData(pokerAnalyticsActivity.getRealm(), primaryKey)
this.viewModel.onRowValueChanged() this.onRowValueChanged()
// this.delegate.onRowValueChanged(proxyItem, this.row) // this.delegate.onRowValueChanged(proxyItem, this.row)
dismiss() dismiss()
} }
@ -161,14 +165,14 @@ open class BottomSheetFragment : BottomSheetDialogFragment() {
// Menu // Menu
bottomSheetToolbar.menu.findItem(R.id.actionClear).setOnMenuItemClickListener { bottomSheetToolbar.menu.findItem(R.id.actionClear).setOnMenuItemClickListener {
this.viewModel.onClear() this.onClear()
// delegate.onRowValueChanged(null, row) // delegate.onRowValueChanged(null, row)
dismiss() dismiss()
true true
} }
bottomSheetToolbar.menu.findItem(R.id.actionDelete).setOnMenuItemClickListener { bottomSheetToolbar.menu.findItem(R.id.actionDelete).setOnMenuItemClickListener {
this.viewModel.onRowDeleted() this.onRowDeleted()
// delegate.onRowDeleted(row) // delegate.onRowDeleted(row)
dismiss() dismiss()
true true
@ -194,7 +198,7 @@ open class BottomSheetFragment : BottomSheetDialogFragment() {
true true
} }
bottomSheetToolbar.menu.findItem(R.id.actionCheck).setOnMenuItemClickListener { bottomSheetToolbar.menu.findItem(R.id.actionCheck).setOnMenuItemClickListener {
this.viewModel.onRowValueChanged() this.onRowValueChanged()
// this.delegate.onRowValueChanged(getValue(), row) // this.delegate.onRowValueChanged(getValue(), row)
dismiss() dismiss()
true true
@ -216,4 +220,44 @@ open class BottomSheetFragment : BottomSheetDialogFragment() {
return this.viewModel.getValue() return this.viewModel.getValue()
} }
private fun onClear() {
this.delegate?.onRowValueChanged(null, this.viewModel.row)
}
fun onRowValueChanged() {
val row = this.viewModel.row
// if some data has been added
this.viewModel.addedData?.let {
this.delegate?.onRowValueChanged(it, row)
return
}
val value = this.viewModel.changedValue()
this.delegate?.onRowValueChanged(value, row)
}
private fun onRowDeleted() {
this.delegate?.onRowDeleted(this.viewModel.row)
}
fun onRowSelected(row: RowRepresentable) {
this.viewModel.rowSelected(row)
this.refreshRow(row)
}
fun onRowSelected(position: Int) {
val value = this.viewModel.rowSelected(position)
this.delegate?.onRowValueChanged(value, this.viewModel.row)
}
fun notifyDataSetChanged() {
this.dataAdapter.notifyDataSetChanged()
}
fun refreshRow(row: RowRepresentable) {
this.dataAdapter.refreshRow(row)
}
} }

@ -28,7 +28,7 @@ open class BottomSheetListFragment : BottomSheetFragment(), LiveRowRepresentable
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
this.viewModel.notifyDataSetChanged() this.notifyDataSetChanged()
} }
override fun rowRepresentableForPosition(position: Int): RowRepresentable? { override fun rowRepresentableForPosition(position: Int): RowRepresentable? {
@ -51,7 +51,7 @@ open class BottomSheetListFragment : BottomSheetFragment(), LiveRowRepresentable
override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
this.viewModel.onRowSelected(position) this.onRowSelected(position)
dismiss() dismiss()
// this.viewModel.realmData?.let { // this.viewModel.realmData?.let {
// val selectedData = it[position] // val selectedData = it[position]
@ -61,7 +61,7 @@ open class BottomSheetListFragment : BottomSheetFragment(), LiveRowRepresentable
// dismiss() // dismiss()
// } // }
// } // }
super.onRowSelected(position, row, tag) // super.onRowSelected(position, row, tag)
} }
/** /**
@ -86,7 +86,7 @@ open class BottomSheetListFragment : BottomSheetFragment(), LiveRowRepresentable
val viewManager = LinearLayoutManager(requireContext()) val viewManager = LinearLayoutManager(requireContext())
val dataAdapter = RowRepresentableAdapter(this, this) val dataAdapter = RowRepresentableAdapter(this, this)
this.viewModel.dataAdapter = dataAdapter this.dataAdapter = dataAdapter
recyclerView.apply { recyclerView.apply {
setHasFixedSize(true) setHasFixedSize(true)

@ -30,7 +30,7 @@ class BottomSheetListGameFragment : BottomSheetListFragment() {
val selectedData = it[position] val selectedData = it[position]
selectedData?.let { data -> selectedData?.let { data ->
this.viewModel.someValues[1] = data this.viewModel.someValues[1] = data
this.viewModel.onRowValueChanged() this.onRowValueChanged()
// this.delegate.onRowValueChanged(values, this.row) // this.delegate.onRowValueChanged(values, this.row)
dismiss() dismiss()
} }
@ -69,7 +69,7 @@ class BottomSheetListGameFragment : BottomSheetListFragment() {
val viewManager2 = LinearLayoutManager(requireContext()) val viewManager2 = LinearLayoutManager(requireContext())
val dataAdapter = RowRepresentableAdapter(this, this) val dataAdapter = RowRepresentableAdapter(this, this)
this.viewModel.dataAdapter = dataAdapter this.dataAdapter = dataAdapter
recyclerView2.apply { recyclerView2.apply {
setHasFixedSize(true) setHasFixedSize(true)

@ -26,13 +26,13 @@ open class BottomSheetMultiSelectionFragment : BottomSheetListFragment() {
val liveDataType = LiveData.values()[dataType] val liveDataType = LiveData.values()[dataType]
val proxyItem: RealmModel? = liveDataType.getData(pokerAnalyticsActivity.getRealm(), primaryKey) val proxyItem: RealmModel? = liveDataType.getData(pokerAnalyticsActivity.getRealm(), primaryKey)
this.viewModel.selectedRows.add(proxyItem as RowRepresentable) this.viewModel.selectedRows.add(proxyItem as RowRepresentable)
this.viewModel.refreshRow(proxyItem as RowRepresentable) this.refreshRow(proxyItem as RowRepresentable)
// dataAdapter.refreshRow(proxyItem as RowRepresentable) // dataAdapter.refreshRow(proxyItem as RowRepresentable)
} }
} }
override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
this.viewModel.onRowSelected(row) this.onRowSelected(row)
} }
override fun isSelected( override fun isSelected(

@ -68,7 +68,7 @@ class BottomSheetNumericTextFragment : BottomSheetFragment() {
editText.setOnEditorActionListener { _, actionId, _ -> editText.setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_DONE) { if (actionId == EditorInfo.IME_ACTION_DONE) {
this.viewModel.onRowValueChanged() this.onRowValueChanged()
// delegate.onRowValueChanged(getValue(), row) // delegate.onRowValueChanged(getValue(), row)
dismiss() dismiss()
true true

@ -25,7 +25,7 @@ class BottomSheetStaticListFragment : BottomSheetFragment(), StaticRowRepresenta
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
this.viewModel.notifyDataSetChanged() this.notifyDataSetChanged()
// dataAdapter.notifyDataSetChanged() // dataAdapter.notifyDataSetChanged()
} }
@ -35,10 +35,10 @@ class BottomSheetStaticListFragment : BottomSheetFragment(), StaticRowRepresenta
override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
this.viewModel.selectedRows.add(row) this.viewModel.selectedRows.add(row)
this.viewModel.onRowValueChanged() this.onRowValueChanged()
// this.delegate.onRowValueChanged(row, this.row) // this.delegate.onRowValueChanged(row, this.row)
dismiss() dismiss()
super.onRowSelected(position, row, tag) // super.onRowSelected(position, row, tag)
} }
/** /**
@ -49,7 +49,7 @@ class BottomSheetStaticListFragment : BottomSheetFragment(), StaticRowRepresenta
val viewManager = LinearLayoutManager(requireContext()) val viewManager = LinearLayoutManager(requireContext())
val dataAdapter = RowRepresentableAdapter(this, this) val dataAdapter = RowRepresentableAdapter(this, this)
this.viewModel.dataAdapter = dataAdapter this.dataAdapter = dataAdapter
recyclerView.apply { recyclerView.apply {
setHasFixedSize(true) setHasFixedSize(true)

@ -65,7 +65,7 @@ class BottomSheetSumFragment : BottomSheetFragment() {
button1.setOnClickListener { button1.setOnClickListener {
// val newValue = this.viewModel.currentDefaultValue + defaultValue1 // val newValue = this.viewModel.currentDefaultValue + defaultValue1
this.viewModel.doubleValue = this.viewModel.currentDefaultValue + defaultValue1 this.viewModel.doubleValue = this.viewModel.currentDefaultValue + defaultValue1
this.viewModel.onRowValueChanged() this.onRowValueChanged()
// this.delegate.onRowValueChanged(currentDefaultValue + defaultValue1, row) // this.delegate.onRowValueChanged(currentDefaultValue + defaultValue1, row)
dismiss() dismiss()
} }
@ -82,7 +82,7 @@ class BottomSheetSumFragment : BottomSheetFragment() {
button2.visibility = if (defaultValue2 > 0) View.VISIBLE else View.GONE button2.visibility = if (defaultValue2 > 0) View.VISIBLE else View.GONE
button2.setOnClickListener { button2.setOnClickListener {
this.viewModel.doubleValue = this.viewModel.currentDefaultValue + defaultValue2 this.viewModel.doubleValue = this.viewModel.currentDefaultValue + defaultValue2
this.viewModel.onRowValueChanged() this.onRowValueChanged()
// this.delegate.onRowValueChanged(currentDefaultValue + defaultValue2, row) // this.delegate.onRowValueChanged(currentDefaultValue + defaultValue2, row)
dismiss() dismiss()
} }
@ -113,7 +113,7 @@ class BottomSheetSumFragment : BottomSheetFragment() {
editText2.setOnEditorActionListener { _, actionId, _ -> editText2.setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_DONE) { if (actionId == EditorInfo.IME_ACTION_DONE) {
this.viewModel.onRowValueChanged() this.onRowValueChanged()
// this.delegate.onRowValueChanged(value, row) // this.delegate.onRowValueChanged(value, row)
dismiss() dismiss()
true true

@ -26,7 +26,7 @@ class BottomSheetTableSizeGridFragment : BottomSheetFragment(), StaticRowReprese
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
this.viewModel.notifyDataSetChanged() this.notifyDataSetChanged()
// dataAdapter.notifyDataSetChanged() // dataAdapter.notifyDataSetChanged()
} }
@ -39,7 +39,7 @@ class BottomSheetTableSizeGridFragment : BottomSheetFragment(), StaticRowReprese
val viewManager = GridLayoutManager(requireContext(), 3) val viewManager = GridLayoutManager(requireContext(), 3)
val dataAdapter = RowRepresentableAdapter(this, this) val dataAdapter = RowRepresentableAdapter(this, this)
this.viewModel.dataAdapter = dataAdapter this.dataAdapter = dataAdapter
val spanCount = 3 val spanCount = 3
val spacing = 2.px val spacing = 2.px
@ -59,7 +59,7 @@ class BottomSheetTableSizeGridFragment : BottomSheetFragment(), StaticRowReprese
override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
this.viewModel.defaultSize = (row as TableSize).numberOfPlayer this.viewModel.defaultSize = (row as TableSize).numberOfPlayer
this.viewModel.onRowValueChanged() this.onRowValueChanged()
dismiss() dismiss()
} }

@ -5,8 +5,6 @@ import io.realm.RealmList
import io.realm.RealmResults import io.realm.RealmResults
import net.pokeranalytics.android.exceptions.PAIllegalStateException import net.pokeranalytics.android.exceptions.PAIllegalStateException
import net.pokeranalytics.android.exceptions.RowRepresentableEditDescriptorException import net.pokeranalytics.android.exceptions.RowRepresentableEditDescriptorException
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor
@ -16,7 +14,6 @@ import java.util.*
class BottomSheetViewModel : ViewModel() { class BottomSheetViewModel : ViewModel() {
lateinit var row: RowRepresentable lateinit var row: RowRepresentable
lateinit var delegate: RowRepresentableDelegate
var currentCurrency: Currency? = null var currentCurrency: Currency? = null
var valueAsPlaceholder: Boolean = false var valueAsPlaceholder: Boolean = false
@ -44,7 +41,6 @@ class BottomSheetViewModel : ViewModel() {
/** /**
* Lists, dynamic or static * Lists, dynamic or static
*/ */
lateinit var dataAdapter: RowRepresentableAdapter
var realmData: RealmResults<RowRepresentable>? = null var realmData: RealmResults<RowRepresentable>? = null
var staticRows: List<RowRepresentable> = emptyList() var staticRows: List<RowRepresentable> = emptyList()
@ -193,60 +189,32 @@ class BottomSheetViewModel : ViewModel() {
} }
} }
fun onClear() { fun isSelected(row: RowRepresentable): Boolean {
this.delegate.onRowValueChanged(null, this.row) return this.selectedRows.contains(row)
} }
fun onRowValueChanged() { fun changedValue(): Any? {
return when(row.bottomSheetType) {
// if some data has been added
this.addedData?.let {
this.delegate.onRowValueChanged(it, this.row)
return
}
// otherwise, default behavior
val value = when(this.row.bottomSheetType) {
BottomSheetType.DOUBLE_EDIT_TEXT -> arrayListOf(this.stringValue, this.secondStringValue) BottomSheetType.DOUBLE_EDIT_TEXT -> arrayListOf(this.stringValue, this.secondStringValue)
BottomSheetType.DOUBLE_LIST, BottomSheetType.LIST_GAME -> arrayListOf(this.someValues[0], this.someValues[1]) BottomSheetType.DOUBLE_LIST, BottomSheetType.LIST_GAME -> arrayListOf(this.someValues[0], this.someValues[1])
else -> getValue() else -> getValue()
} }
this.delegate.onRowValueChanged(value, this.row)
}
fun onRowDeleted() {
this.delegate.onRowDeleted(this.row)
} }
fun onRowSelected(row: RowRepresentable) { fun rowSelected(row: RowRepresentable) {
if (this.selectedRows.contains(row)) { if (this.selectedRows.contains(row)) {
this.selectedRows.remove(row) this.selectedRows.remove(row)
} else { } else {
this.selectedRows.add(row) this.selectedRows.add(row)
} }
this.refreshRow(row) }
}
fun onRowSelected(position: Int) { fun rowSelected(position: Int): RowRepresentable? {
val value = when(this.row.bottomSheetType) { return when(this.row.bottomSheetType) {
BottomSheetType.LIST -> this.realmData?.get(position) BottomSheetType.LIST -> this.realmData?.get(position)
BottomSheetType.LIST_STATIC -> this.staticRows[position] BottomSheetType.LIST_STATIC -> this.staticRows[position]
else -> throw PAIllegalStateException("row selected for unmanaged bottom sheet type") else -> throw PAIllegalStateException("row selected for unmanaged bottom sheet type")
} }
this.delegate.onRowValueChanged(value, this.row)
}
fun isSelected(row: RowRepresentable): Boolean {
return this.selectedRows.contains(row)
}
fun notifyDataSetChanged() {
this.dataAdapter.notifyDataSetChanged()
}
fun refreshRow(row: RowRepresentable) {
this.dataAdapter.refreshRow(row)
} }
} }

@ -10,7 +10,7 @@ buildscript {
} }
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:3.6.1' classpath 'com.android.tools.build:gradle:3.6.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'io.realm:realm-gradle-plugin:5.15.2' classpath 'io.realm:realm-gradle-plugin:5.15.2'
classpath 'com.google.gms:google-services:4.3.3' classpath 'com.google.gms:google-services:4.3.3'

Loading…
Cancel
Save