Display RealmResult in BottomSheet list

dev_raz_wip
Aurelien Hubert 7 years ago
parent 120e352bca
commit e244e7a561
  1. 4
      app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt
  2. 4
      app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DataListAdapter.kt
  3. 2
      app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicRowInterface.kt
  4. 11
      app/src/main/java/net/pokeranalytics/android/ui/fragment/NewSessionFragment.kt
  5. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetData.kt
  6. 19
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetListFragment.kt

@ -147,14 +147,14 @@ open class Session : RealmObject(), SessionInterface, DynamicRowDelegate, Displa
override var title: String = "Change that: $creationDate" override var title: String = "Change that: $creationDate"
override val primaryKey: String get() = this.id override val primaryKey: String get() = this.id
override fun getBottomSheetData(row: DynamicRowInterface): ArrayList<BottomSheetData> { override fun getBottomSheetData(row: DynamicRowInterface, realm: Realm): ArrayList<BottomSheetData> {
val data = ArrayList<BottomSheetData>() val data = ArrayList<BottomSheetData>()
// Todo: Localize & set real data // Todo: Localize & set real data
when (row) { when (row) {
SessionRow.GAME -> { SessionRow.GAME -> {
data.add(BottomSheetData(game, "", 0, arrayListOf(Game(), Game(), Game()))) data.add(BottomSheetData(game, "", 0, SettingRow.GAME.items(realm)))
} }
SessionRow.DATE -> { SessionRow.DATE -> {
data.add(BottomSheetData(timeFrame?.startDate, "Start date")) data.add(BottomSheetData(timeFrame?.startDate, "Start date"))

@ -6,7 +6,7 @@ import android.view.ViewGroup
import androidx.appcompat.widget.AppCompatTextView import androidx.appcompat.widget.AppCompatTextView
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.fragment_data_list.view.* import io.realm.Realm
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.fragment.components.BottomSheetData import net.pokeranalytics.android.ui.fragment.components.BottomSheetData
@ -22,7 +22,7 @@ interface DisplayableDataSource {
} }
interface EditableDataSource { interface EditableDataSource {
fun getBottomSheetData(row: DynamicRowInterface): ArrayList<BottomSheetData> fun getBottomSheetData(row: DynamicRowInterface, realm: Realm): ArrayList<BottomSheetData>
} }
class DataListAdapter(var delegate: DisplayableDelegate, var layout: Int? = null) : RecyclerView.Adapter<RecyclerView.ViewHolder>() { class DataListAdapter(var delegate: DisplayableDelegate, var layout: Int? = null) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {

@ -55,7 +55,7 @@ enum class SessionRow(val resId: Int) : DynamicRowInterface {
get() { get() {
return when (this) { return when (this) {
BLINDS -> BottomSheetType.DOUBLE_EDIT_TEXT BLINDS -> BottomSheetType.DOUBLE_EDIT_TEXT
GAME -> BottomSheetType.DOUBLE_LIST GAME -> BottomSheetType.LIST
DATE -> BottomSheetType.DATE DATE -> BottomSheetType.DATE
} }
} }

@ -32,16 +32,7 @@ class NewSessionFragment : PokerAnalyticsFragment(), DynamicRowCallback, BottomS
} }
override fun onRowSelected(row: DynamicRowInterface) { override fun onRowSelected(row: DynamicRowInterface) {
/* val data = newSession.getBottomSheetData(row, getRealm())
val data = when (row.bottomSheetType) {
BottomSheetType.BLINDS -> newSession
BottomSheetType.DATE -> newSession.timeFrame
BottomSheetType.GAME -> newSession.game
else -> Any()
}
*/
val data = newSession.getBottomSheetData(row)
BottomSheetFragment.create(fragmentManager, row, this, data) BottomSheetFragment.create(fragmentManager, row, this, data)
} }

@ -1,11 +1,11 @@
package net.pokeranalytics.android.ui.fragment.components package net.pokeranalytics.android.ui.fragment.components
import android.text.InputType import android.text.InputType
import net.pokeranalytics.android.ui.adapter.components.DisplayableDataSource import io.realm.RealmResults
class BottomSheetData( class BottomSheetData(
var defaultValue: Any? = null, var defaultValue: Any? = null,
var hint: String? = "", var hint: String? = "",
var inputType: Int? = InputType.TYPE_CLASS_TEXT, var inputType: Int? = InputType.TYPE_CLASS_TEXT,
var data: ArrayList<DisplayableDataSource>? = ArrayList() var data: RealmResults<*>? = null
) )

@ -3,7 +3,9 @@ package net.pokeranalytics.android.ui.fragment.components
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.widget.Toast
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import io.realm.RealmResults
import kotlinx.android.synthetic.main.bottom_sheet_double_list.* import kotlinx.android.synthetic.main.bottom_sheet_double_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
@ -14,6 +16,8 @@ import net.pokeranalytics.android.ui.adapter.components.DisplayableDelegate
class BottomSheetListFragment : BottomSheetFragment(), DisplayableDelegate { class BottomSheetListFragment : BottomSheetFragment(), DisplayableDelegate {
private 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)
initData() initData()
@ -31,21 +35,32 @@ class BottomSheetListFragment : BottomSheetFragment(), DisplayableDelegate {
} }
override fun data(position: Int): DisplayableDataSource { override fun data(position: Int): DisplayableDataSource {
realmData?.let {
return it[position] as DisplayableDataSource
}
//TODO: Change that
return Game() return Game()
} }
override fun onRowSelected(position: Int) { override fun onRowSelected(position: Int) {
realmData?.let {
Toast.makeText(requireContext(), "Select: ${it[position]}", Toast.LENGTH_SHORT).show()
}
} }
override fun size(): Int { override fun size(): Int {
return 0 return realmData?.size ?: 0
} }
/** /**
* Init data * Init data
*/ */
private fun initData() { private fun initData() {
val data = getData()
val bottomSheetData = getData()
if (bottomSheetData.isNotEmpty() && bottomSheetData.first().data != null) {
this.realmData = bottomSheetData.first().data
}
} }
/** /**

Loading…
Cancel
Save