Refactor BottomSheet ListFragment & ListGameFragment

feature/top10
Aurelien Hubert 7 years ago
parent a41933d2f7
commit 6b34d36502
  1. 13
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListFragment.kt
  2. 49
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListGameFragment.kt

@ -14,11 +14,10 @@ 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.RowViewType import net.pokeranalytics.android.ui.view.RowViewType
class BottomSheetListFragment : BottomSheetFragment(), LiveRowRepresentableDataSource, open class BottomSheetListFragment : BottomSheetFragment(), LiveRowRepresentableDataSource, RowRepresentableDelegate {
RowRepresentableDelegate {
private var realmData: RealmResults<*>? = null lateinit var dataAdapter: RowRepresentableAdapter
private lateinit var dataAdapter: RowRepresentableAdapter var realmData: RealmResults<*>? = null
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
@ -35,7 +34,7 @@ class BottomSheetListFragment : BottomSheetFragment(), LiveRowRepresentableDataS
realmData?.let { realmData?.let {
return it[position] as RowRepresentable return it[position] as RowRepresentable
} }
return null throw IllegalStateException("Need to implement Data Source")
} }
override fun numberOfRows(): Int { override fun numberOfRows(): Int {
@ -70,7 +69,7 @@ class BottomSheetListFragment : BottomSheetFragment(), LiveRowRepresentableDataS
/** /**
* Init data * Init data
*/ */
private fun initData() { open fun initData() {
val bottomSheetData = getData() val bottomSheetData = getData()
if (bottomSheetData.isNotEmpty() && bottomSheetData.first().data != null) { if (bottomSheetData.isNotEmpty() && bottomSheetData.first().data != null) {
this.realmData = bottomSheetData.first().data as RealmResults<*> this.realmData = bottomSheetData.first().data as RealmResults<*>
@ -80,7 +79,7 @@ class BottomSheetListFragment : BottomSheetFragment(), LiveRowRepresentableDataS
/** /**
* Init UI * Init UI
*/ */
private fun initUI() { open fun initUI() {
LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_list, view?.bottomSheetContainer, true) LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_list, view?.bottomSheetContainer, true)

@ -10,18 +10,13 @@ import kotlinx.android.synthetic.main.bottom_sheet_game_list.*
import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.* import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.Limit import net.pokeranalytics.android.model.Limit
import net.pokeranalytics.android.ui.adapter.LiveRowRepresentableDataSource
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
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.RowViewType
class BottomSheetListGameFragment : BottomSheetFragment(), LiveRowRepresentableDataSource, RowRepresentableDelegate { class BottomSheetListGameFragment : BottomSheetListFragment() {
private var limit: Int = -1 private var limit: Int? = 0
private var realmData: RealmResults<*>? = null
private lateinit var dataAdapter: RowRepresentableAdapter
private val values = ArrayList<Any?>() private val values = ArrayList<Any?>()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@ -30,40 +25,10 @@ class BottomSheetListGameFragment : BottomSheetFragment(), LiveRowRepresentableD
initUI() initUI()
} }
override fun onResume() {
super.onResume()
dataAdapter.notifyDataSetChanged()
}
override fun getValue(): Any? { override fun getValue(): Any? {
return values return values
} }
override fun rowRepresentableForPosition(position: Int): RowRepresentable? {
realmData?.let {
return it[position] as RowRepresentable
}
throw IllegalStateException("Need to implement Data Source")
}
override fun numberOfRows(): Int {
realmData?.let {
return it.size
}
return 0
}
override fun viewTypeForPosition(position: Int): Int {
return RowViewType.BOTTOM_SHEET_DATA.ordinal
}
override fun indexForRow(row: RowRepresentable): Int {
realmData?.let {
return it.indexOf(row)
}
throw IllegalStateException("Need to implement Data Source")
}
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) {
realmData?.let { realmData?.let {
val selectedData = it[position] val selectedData = it[position]
@ -79,10 +44,10 @@ class BottomSheetListGameFragment : BottomSheetFragment(), LiveRowRepresentableD
/** /**
* Init data * Init data
*/ */
private fun initData() { override fun initData() {
val bottomSheetData = getData() val bottomSheetData = getData()
if (bottomSheetData.isNotEmpty() && bottomSheetData.size >= 2 && bottomSheetData[1].data != null) { if (bottomSheetData.isNotEmpty() && bottomSheetData.size >= 2 && bottomSheetData[1].data != null) {
this.limit = bottomSheetData[0].defaultValue as Int? ?: -1 this.limit = bottomSheetData[0].defaultValue as Int?
this.realmData = bottomSheetData[1].data as RealmResults<*> this.realmData = bottomSheetData[1].data as RealmResults<*>
} }
} }
@ -90,18 +55,18 @@ class BottomSheetListGameFragment : BottomSheetFragment(), LiveRowRepresentableD
/** /**
* Init UI * Init UI
*/ */
private fun initUI() { override fun initUI() {
LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_game_list, view?.bottomSheetContainer, true) LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_game_list, view?.bottomSheetContainer, true)
values.add(0, if (limit == -1) null else limit) values.add(0, limit)
values.add(1, null) values.add(1, null)
chipGroup.removeAllViews() chipGroup.removeAllViews()
Limit.values().forEach { Limit.values().forEach {
val chip = Chip(requireContext()) val chip = Chip(requireContext())
chip.text = it.shortName
chip.id = it.ordinal chip.id = it.ordinal
chip.text = it.shortName
chip.isChecked = it.ordinal == limit chip.isChecked = it.ordinal == limit
chipGroup.addView(chip) chipGroup.addView(chip)
} }

Loading…
Cancel
Save