add a DataListAdapter to handle business objects

dev_raz_wip
Razmig Sarkissian 7 years ago
parent 5615854ec1
commit 11ca489578
  1. 2
      app/src/main/AndroidManifest.xml
  2. 5
      app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt
  3. 26
      app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DataListAdapter.kt
  4. 33
      app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt
  5. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt

@ -20,7 +20,7 @@
<category android:name="android.intent.category.LAUNCHER"/> <category android:name="android.intent.category.LAUNCHER"/>
</intent-filter> </intent-filter>
</activity> </activity>
<activity android:name=".ui.activity.DataListActivity" />
<activity <activity
android:name=".ui.activity.NewSessionActivity" android:name=".ui.activity.NewSessionActivity"
android:launchMode="singleTop"/> android:launchMode="singleTop"/>

@ -4,13 +4,14 @@ import android.content.Context
import io.realm.RealmList import io.realm.RealmList
import io.realm.RealmObject import io.realm.RealmObject
import io.realm.annotations.PrimaryKey import io.realm.annotations.PrimaryKey
import net.pokeranalytics.android.ui.adapter.components.DisplayableData
import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface
import net.pokeranalytics.android.ui.adapter.components.RowViewType import net.pokeranalytics.android.ui.adapter.components.RowViewType
import net.pokeranalytics.android.ui.fragment.components.BottomSheetType import net.pokeranalytics.android.ui.fragment.components.BottomSheetType
import java.util.* import java.util.*
open class Bankroll(name: String = "") : RealmObject() { open class Bankroll(name: String = "") : RealmObject(), DisplayableData {
@PrimaryKey @PrimaryKey
var id = UUID.randomUUID().toString() var id = UUID.randomUUID().toString()
@ -28,4 +29,6 @@ open class Bankroll(name: String = "") : RealmObject() {
var currency: Currency? = null var currency: Currency? = null
// @todo rate management // @todo rate management
override var title: String = this.name
} }

@ -1,28 +1,40 @@
package net.pokeranalytics.android.ui.adapter.components package net.pokeranalytics.android.ui.adapter.components
import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.row_session.view.*
import net.pokeranalytics.android.R
interface DataRowDelegate { interface DataRowDelegate {
var viewType: RowViewType fun data(position: Int) : DisplayableData
fun data(position: Int) : DynamicRowInterface fun size() : Int
fun size() : Int { return 0 }
} }
interface DataRowCallback { interface DataRowCallback {
fun onRowSelected(position: Int) fun onRowSelected(position: Int)
} }
interface DisplayableData {
var title: String
}
class DataListAdapter(var delegate: DataRowDelegate, var callBackDelegate: DataRowCallback? = null) : RecyclerView.Adapter<RecyclerView.ViewHolder>() { class DataListAdapter(var delegate: DataRowDelegate, var callBackDelegate: DataRowCallback? = null) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
inner class DataViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(row: DisplayableData, listener: View.OnClickListener) {
itemView.title.text = row.title
itemView.container.setOnClickListener(listener)
}
}
override fun getItemViewType(position: Int): Int { override fun getItemViewType(position: Int): Int {
return delegate.viewType.ordinal return RowViewType.TITLE.ordinal
} }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
val rowViewType: RowViewType = RowViewType.values()[viewType] return DataViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.row_title, parent, false))
return rowViewType.viewHolder(parent)
} }
override fun getItemCount(): Int { override fun getItemCount(): Int {
@ -33,7 +45,7 @@ class DataListAdapter(var delegate: DataRowDelegate, var callBackDelegate: DataR
val listener = View.OnClickListener { val listener = View.OnClickListener {
callBackDelegate?.onRowSelected(position) callBackDelegate?.onRowSelected(position)
} }
(holder as DynamicHolder).bind(this.delegate.data(position), null, listener) (holder as DataViewHolder).bind(this.delegate.data(position), listener)
} }
} }

@ -6,42 +6,48 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import io.realm.Realm import io.realm.Realm
import io.realm.RealmObject
import io.realm.RealmResults
import io.realm.Sort import io.realm.Sort
import kotlinx.android.synthetic.main.fragment_new_session.* import kotlinx.android.synthetic.main.fragment_new_session.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.realm.* import net.pokeranalytics.android.model.realm.*
import net.pokeranalytics.android.ui.adapter.components.* import net.pokeranalytics.android.ui.adapter.components.*
import net.pokeranalytics.android.util.PokerAnalyticsFragment import net.pokeranalytics.android.util.PokerAnalyticsFragment
import net.pokeranalytics.android.util.data.sessionDao
import java.util.*
import kotlin.collections.ArrayList
class DataListFragment : PokerAnalyticsFragment(), DataRowDelegate, DataRowCallback { class DataListFragment : PokerAnalyticsFragment(), DataRowDelegate, DataRowCallback {
private lateinit var dataType: DataObjectRowType private lateinit var dataType: DataObjectRowType
private lateinit var realmObjects: ArrayList<RealmObject>
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_data_list, container, false) return inflater.inflate(R.layout.fragment_data_list, container, false)
} }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
initData() initData()
initUI() initUI()
} }
override var viewType: RowViewType override fun data(position: Int): DisplayableData {
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates. return (realmObjects[position] as DisplayableData)
set(value) {}
override fun data(position: Int): DynamicRowInterface {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
} }
override fun onRowSelected(position: Int) { override fun onRowSelected(position: Int) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates. TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
} }
private fun initData() { override fun size(): Int {
} return realmObjects.size
}
private fun initData() {
}
/** /**
* Init UI * Init UI
@ -64,5 +70,14 @@ class DataListFragment : PokerAnalyticsFragment(), DataRowDelegate, DataRowCallb
*/ */
fun setData(dataType: Int) { fun setData(dataType: Int) {
this.dataType = DataObjectRowType.values()[dataType] this.dataType = DataObjectRowType.values()[dataType]
val realm = Realm.getDefaultInstance()
realmObjects = ArrayList( when (DataObjectRowType.values()[dataType]) {
DataObjectRowType.BANKROLL -> realm.where(Bankroll::class.java).findAll().sort("name", Sort.DESCENDING)
DataObjectRowType.GAME-> realm.where(Game::class.java).findAll().sort("name", Sort.DESCENDING)
DataObjectRowType.LOCATION -> realm.where(Location::class.java).findAll().sort("name", Sort.DESCENDING)
DataObjectRowType.TOURNAMENT_TYPE -> realm.where(TournamentFeature::class.java).findAll().sort("name", Sort.DESCENDING)
DataObjectRowType.TRANSACTION_TYPE -> realm.where(TransactionType::class.java).findAll().sort("name", Sort.DESCENDING)
})
} }
} }

@ -8,6 +8,8 @@ import android.widget.Toast
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import kotlinx.android.synthetic.main.fragment_settings.* import kotlinx.android.synthetic.main.fragment_settings.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.activity.DataListActivity
import net.pokeranalytics.android.ui.activity.NewSessionActivity
import net.pokeranalytics.android.ui.adapter.components.* import net.pokeranalytics.android.ui.adapter.components.*
import net.pokeranalytics.android.util.PokerAnalyticsFragment import net.pokeranalytics.android.util.PokerAnalyticsFragment
@ -45,7 +47,7 @@ class SettingsFragment : PokerAnalyticsFragment(), DynamicRowDelegate, DynamicRo
} }
override fun onRowSelected(row: DynamicRowInterface) { override fun onRowSelected(row: DynamicRowInterface) {
//val bottomSheetFragment = openBottomSheet(row) DataListActivity.newInstance(requireContext(), (row as DataObjectRowType).ordinal)
} }
/** /**

Loading…
Cancel
Save