diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 29d1e601..0d8cf486 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -25,7 +25,7 @@ android:name=".ui.activity.NewSessionActivity" android:launchMode="singleTop"/> - + var sortingFieldName: String var sorting: Sort - fun clazz(): Class<*> + fun clazz(): Class } class SectionRow(stringRes: Int) : DynamicRowInterface { @@ -86,19 +86,13 @@ enum class SettingRow(val resId: Int) : DynamicRowInterface, DynamicValues { override var bottomSheetType: BottomSheetType = BottomSheetType.NONE override fun items(realm: Realm): RealmResults<*> { - return when (this) { - BANKROLL -> realm.where(Bankroll::class.java).findAll().sort(this.sortingFieldName, this.sorting) - GAME-> realm.where(Game::class.java).findAll().sort(this.sortingFieldName, this.sorting) - LOCATION -> realm.where(Location::class.java).findAll().sort(this.sortingFieldName, this.sorting) - TOURNAMENT_TYPE -> realm.where(TournamentFeature::class.java).findAll().sort(this.sortingFieldName, this.sorting) - TRANSACTION_TYPE -> realm.where(TransactionType::class.java).findAll().sort(this.sortingFieldName, this.sorting) - } + return realm.where(this.clazz()).findAll().sort(this.sortingFieldName, this.sorting) } override var sortingFieldName: String = "name" override var sorting: Sort = Sort.DESCENDING - override fun clazz(): Class<*> { + override fun clazz(): Class { return when (this) { BANKROLL -> Bankroll::class.java GAME -> Game::class.java diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt index a60055ac..986ef2a5 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt @@ -43,12 +43,10 @@ class EditableDataFragment : PokerAnalyticsFragment(), DynamicRowCallback { private fun initUI() { val viewManager = LinearLayoutManager(requireContext()) - val dynamicListAdapter = DynamicListAdapter((this.item as DynamicRowDelegate), this) recyclerView.apply { setHasFixedSize(true) layoutManager = viewManager - adapter = dynamicListAdapter } } @@ -58,20 +56,21 @@ class EditableDataFragment : PokerAnalyticsFragment(), DynamicRowCallback { fun setData(dataType: Int, primaryKey: String?) { this.dataType = SettingRow.values()[dataType] val realm = Realm.getDefaultInstance() + var _item : RealmObject? = null primaryKey?.let { - when (this.dataType) { - SettingRow.BANKROLL -> realm.where(Bankroll::class.java).equalTo("id", it).findFirst() - SettingRow.GAME -> realm.where(Game::class.java).equalTo("id", it).findFirst() - SettingRow.LOCATION -> realm.where(Location::class.java).equalTo("id", it).findFirst() - SettingRow.TOURNAMENT_TYPE -> realm.where(TournamentFeature::class.java).equalTo("id", it).findFirst() - SettingRow.TRANSACTION_TYPE-> realm.where(TransactionType::class.java).equalTo("id", it).findFirst() - }?.let { - this.item = realm.copyFromRealm(it) + val t = realm.where(this.dataType.clazz()).equalTo("id", it).findFirst() + t?.let { + _item = t } } - if (this.item == null) { - this.item = realm.createObject(Bankroll) - } + _item?.let { + this.item = it + } ?: run { + this.item = realm.createObject(this.dataType.clazz()) + } + + val dynamicListAdapter = DynamicListAdapter((this.item as DynamicRowDelegate), this) + this.recyclerView.adapter = dynamicListAdapter } } \ No newline at end of file