From e244e7a5617937029e33048db562317bbeb17b44 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Mon, 18 Feb 2019 16:08:19 +0100 Subject: [PATCH] Display RealmResult in BottomSheet list --- .../android/model/realm/Session.kt | 4 ++-- .../ui/adapter/components/DataListAdapter.kt | 4 ++-- .../adapter/components/DynamicRowInterface.kt | 2 +- .../android/ui/fragment/NewSessionFragment.kt | 11 +---------- .../ui/fragment/components/BottomSheetData.kt | 4 ++-- .../components/BottomSheetListFragment.kt | 19 +++++++++++++++++-- 6 files changed, 25 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt index b1bde571..57f9e478 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt @@ -147,14 +147,14 @@ open class Session : RealmObject(), SessionInterface, DynamicRowDelegate, Displa override var title: String = "Change that: $creationDate" override val primaryKey: String get() = this.id - override fun getBottomSheetData(row: DynamicRowInterface): ArrayList { + override fun getBottomSheetData(row: DynamicRowInterface, realm: Realm): ArrayList { val data = ArrayList() // Todo: Localize & set real data when (row) { SessionRow.GAME -> { - data.add(BottomSheetData(game, "", 0, arrayListOf(Game(), Game(), Game()))) + data.add(BottomSheetData(game, "", 0, SettingRow.GAME.items(realm))) } SessionRow.DATE -> { data.add(BottomSheetData(timeFrame?.startDate, "Start date")) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DataListAdapter.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DataListAdapter.kt index 7e9d7dbb..84ac672b 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DataListAdapter.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DataListAdapter.kt @@ -6,7 +6,7 @@ import android.view.ViewGroup import androidx.appcompat.widget.AppCompatTextView import androidx.constraintlayout.widget.ConstraintLayout 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.ui.fragment.components.BottomSheetData @@ -22,7 +22,7 @@ interface DisplayableDataSource { } interface EditableDataSource { - fun getBottomSheetData(row: DynamicRowInterface): ArrayList + fun getBottomSheetData(row: DynamicRowInterface, realm: Realm): ArrayList } class DataListAdapter(var delegate: DisplayableDelegate, var layout: Int? = null) : RecyclerView.Adapter() { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicRowInterface.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicRowInterface.kt index da23bfe5..1f7a16de 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicRowInterface.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicRowInterface.kt @@ -55,7 +55,7 @@ enum class SessionRow(val resId: Int) : DynamicRowInterface { get() { return when (this) { BLINDS -> BottomSheetType.DOUBLE_EDIT_TEXT - GAME -> BottomSheetType.DOUBLE_LIST + GAME -> BottomSheetType.LIST DATE -> BottomSheetType.DATE } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/NewSessionFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/NewSessionFragment.kt index 3f3f27f9..881310d8 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/NewSessionFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/NewSessionFragment.kt @@ -32,16 +32,7 @@ class NewSessionFragment : PokerAnalyticsFragment(), DynamicRowCallback, BottomS } override fun onRowSelected(row: DynamicRowInterface) { - /* - val data = when (row.bottomSheetType) { - BottomSheetType.BLINDS -> newSession - BottomSheetType.DATE -> newSession.timeFrame - BottomSheetType.GAME -> newSession.game - else -> Any() - } - */ - - val data = newSession.getBottomSheetData(row) + val data = newSession.getBottomSheetData(row, getRealm()) BottomSheetFragment.create(fragmentManager, row, this, data) } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetData.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetData.kt index a55494f0..978ba7f2 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetData.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetData.kt @@ -1,11 +1,11 @@ package net.pokeranalytics.android.ui.fragment.components import android.text.InputType -import net.pokeranalytics.android.ui.adapter.components.DisplayableDataSource +import io.realm.RealmResults class BottomSheetData( var defaultValue: Any? = null, var hint: String? = "", var inputType: Int? = InputType.TYPE_CLASS_TEXT, - var data: ArrayList? = ArrayList() + var data: RealmResults<*>? = null ) \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetListFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetListFragment.kt index aaac5318..d7c21fb0 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetListFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetListFragment.kt @@ -3,7 +3,9 @@ package net.pokeranalytics.android.ui.fragment.components import android.os.Bundle import android.view.LayoutInflater import android.view.View +import android.widget.Toast import androidx.recyclerview.widget.LinearLayoutManager +import io.realm.RealmResults import kotlinx.android.synthetic.main.bottom_sheet_double_list.* import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.* import net.pokeranalytics.android.R @@ -14,6 +16,8 @@ import net.pokeranalytics.android.ui.adapter.components.DisplayableDelegate class BottomSheetListFragment : BottomSheetFragment(), DisplayableDelegate { + private var realmData: RealmResults<*>? = null + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) initData() @@ -31,21 +35,32 @@ class BottomSheetListFragment : BottomSheetFragment(), DisplayableDelegate { } override fun data(position: Int): DisplayableDataSource { + realmData?.let { + return it[position] as DisplayableDataSource + } + //TODO: Change that return Game() } override fun onRowSelected(position: Int) { + realmData?.let { + Toast.makeText(requireContext(), "Select: ${it[position]}", Toast.LENGTH_SHORT).show() + } } override fun size(): Int { - return 0 + return realmData?.size ?: 0 } /** * Init data */ private fun initData() { - val data = getData() + + val bottomSheetData = getData() + if (bottomSheetData.isNotEmpty() && bottomSheetData.first().data != null) { + this.realmData = bottomSheetData.first().data + } } /**