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. 29
      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"/>
</intent-filter>
</activity>
<activity android:name=".ui.activity.DataListActivity" />
<activity
android:name=".ui.activity.NewSessionActivity"
android:launchMode="singleTop"/>

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

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

@ -6,40 +6,46 @@ import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.LinearLayoutManager
import io.realm.Realm
import io.realm.RealmObject
import io.realm.RealmResults
import io.realm.Sort
import kotlinx.android.synthetic.main.fragment_new_session.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.realm.*
import net.pokeranalytics.android.ui.adapter.components.*
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 {
private lateinit var dataType: DataObjectRowType
private lateinit var realmObjects: ArrayList<RealmObject>
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_data_list, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
initData()
initUI()
}
override var viewType: RowViewType
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
set(value) {}
override fun data(position: Int): DynamicRowInterface {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
override fun data(position: Int): DisplayableData {
return (realmObjects[position] as DisplayableData)
}
override fun onRowSelected(position: Int) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
override fun size(): Int {
return realmObjects.size
}
private fun initData() {
}
@ -64,5 +70,14 @@ class DataListFragment : PokerAnalyticsFragment(), DataRowDelegate, DataRowCallb
*/
fun setData(dataType: Int) {
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 kotlinx.android.synthetic.main.fragment_settings.*
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.util.PokerAnalyticsFragment
@ -45,7 +47,7 @@ class SettingsFragment : PokerAnalyticsFragment(), DynamicRowDelegate, DynamicRo
}
override fun onRowSelected(row: DynamicRowInterface) {
//val bottomSheetFragment = openBottomSheet(row)
DataListActivity.newInstance(requireContext(), (row as DataObjectRowType).ordinal)
}
/**

Loading…
Cancel
Save