remove usage of HistoryAdapter

feature/top10
Razmig Sarkissian 7 years ago
parent 3c31ada7bf
commit 1dc6f591e5
  1. 6
      app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt
  2. 3
      app/src/main/java/net/pokeranalytics/android/ui/activity/HomeActivity.kt
  3. 36
      app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt
  4. 19
      app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt

@ -24,7 +24,7 @@ import java.util.*
import kotlin.collections.ArrayList
open class Session : RealmObject(), SessionInterface, RowRepresentableDataSource,
RowEditable {
RowEditable, RowRepresentable {
@PrimaryKey
var id = UUID.randomUUID().toString()
@ -242,6 +242,10 @@ open class Session : RealmObject(), SessionInterface, RowRepresentableDataSource
return 0.0
}
override fun getDisplayName(): String {
return "session ${this.creationDate}"
}
override fun adapterRows(): ArrayList<RowRepresentable> {
val rows = ArrayList<RowRepresentable>()
rows.addAll(SessionRow.getRowsForState(getState()))

@ -3,6 +3,7 @@ package net.pokeranalytics.android.ui.activity
import android.content.Context
import android.content.Intent
import android.os.Bundle
import androidx.fragment.app.Fragment
import com.google.android.material.bottomnavigation.BottomNavigationView
import kotlinx.android.synthetic.main.activity_home.*
import net.pokeranalytics.android.R
@ -68,7 +69,7 @@ class HomeActivity : PokerAnalyticsActivity() {
else -> ""
}
val fragment = when(index) {
val fragment: Fragment = when(index) {
0 -> HistoryFragment()
1 -> StatsFragment()
else -> SettingsFragment()

@ -9,13 +9,19 @@ import androidx.recyclerview.widget.LinearLayoutManager
import io.realm.RealmResults
import kotlinx.android.synthetic.main.fragment_history.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.ObjectSavable
import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.ui.activity.SessionActivity
import net.pokeranalytics.android.ui.adapter.HistoryAdapter
import net.pokeranalytics.android.ui.adapter.components.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.components.RowRepresentableDataSource
import net.pokeranalytics.android.ui.adapter.components.RowRepresentableDelegate
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType
import net.pokeranalytics.android.util.data.sessionDao
class HistoryFragment : PokerAnalyticsFragment() {
class HistoryFragment : PokerAnalyticsFragment(), RowRepresentableDataSource, RowRepresentableDelegate {
companion object {
fun newInstance(): HistoryFragment {
@ -26,8 +32,8 @@ class HistoryFragment : PokerAnalyticsFragment() {
}
}
private lateinit var historyAdapter: HistoryAdapter
private var realmSessions: RealmResults<Session>? = null
private lateinit var historyAdapter: RowRepresentableAdapter
private lateinit var realmSessions: RealmResults<Session>
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_history, container, false)
@ -41,7 +47,7 @@ class HistoryFragment : PokerAnalyticsFragment() {
override fun onDestroyView() {
super.onDestroyView()
realmSessions?.removeAllChangeListeners()
realmSessions.removeAllChangeListeners()
}
/**
@ -70,28 +76,34 @@ class HistoryFragment : PokerAnalyticsFragment() {
* Init data
*/
private fun initData() {
realmSessions = getRealm().sessionDao().findAllSessions()
realmSessions?.let {
val viewManager = LinearLayoutManager(requireContext())
historyAdapter = HistoryAdapter(it)
historyAdapter = RowRepresentableAdapter(this, this)
recyclerView.apply {
setHasFixedSize(true)
layoutManager = viewManager
adapter = historyAdapter
}
}
historyAdapter.onClickOnSession = {position, session ->
SessionActivity.newInstance(requireContext(), sessionId = session.id)
override fun rowRepresentableForPosition(position: Int): RowRepresentable {
return this.realmSessions[position] as RowRepresentable
}
it.addChangeListener { newSessions ->
historyAdapter.notifyDataSetChanged()
override fun numberOfRows(): Int {
return this.realmSessions.size
}
override fun viewTypeForPosition(position: Int): Int {
return RowViewType.ROW_SESSION.ordinal
}
override fun indexForRow(row: RowRepresentable): Int {
return this.realmSessions.indexOf(row)
}
override fun onRowSelected(row: RowRepresentable) {
SessionActivity.newInstance(requireContext(), sessionId = (row as ObjectSavable).uniqueIdentifier())
}
}

@ -8,10 +8,12 @@ import androidx.constraintlayout.widget.ConstraintLayout
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.row_bottom_sheet_grid_title.view.*
import kotlinx.android.synthetic.main.row_header_title_value.view.*
import kotlinx.android.synthetic.main.row_history_session.view.*
import kotlinx.android.synthetic.main.row_title.view.*
import kotlinx.android.synthetic.main.row_title_value.view.*
import kotlinx.android.synthetic.main.row_title_value_action.view.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.ui.adapter.TableSizeGridAdapter
import net.pokeranalytics.android.ui.adapter.components.RowRepresentableDataSource
@ -33,7 +35,8 @@ enum class RowViewType {
TITLE_VALUE_ACTION,
DATA,
BOTTOM_SHEET_DATA,
TITLE_GRID;
TITLE_GRID,
ROW_SESSION;
inner class FakeViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView),
BindableHolder {
@ -41,6 +44,14 @@ enum class RowViewType {
}
}
inner class RowSessionViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView),
BindableHolder {
override fun bind(row: RowRepresentable, rowRepresentableDataSource: RowRepresentableDataSource?, listener: View.OnClickListener, actionListener: View.OnClickListener?) {
itemView.sessionRow.setData(row as Session)
itemView.sessionRow.setOnClickListener(listener)
}
}
inner class CellSessionViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), BindableHolder {
override fun bind(row: RowRepresentable, rowRepresentableDataSource: RowRepresentableDataSource?, listener: View.OnClickListener, actionListener: View.OnClickListener?) {
itemView.title.text = row.localizedTitle(itemView.context)
@ -163,6 +174,12 @@ enum class RowViewType {
parent,
false)
)
ROW_SESSION -> RowSessionViewHolder(
LayoutInflater.from(parent.context).inflate(
R.layout.row_history_session,
parent,
false)
)
else -> FakeViewHolder(parent)
}
}

Loading…
Cancel
Save