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

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

@ -9,13 +9,19 @@ import androidx.recyclerview.widget.LinearLayoutManager
import io.realm.RealmResults import io.realm.RealmResults
import kotlinx.android.synthetic.main.fragment_history.* import kotlinx.android.synthetic.main.fragment_history.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.ObjectSavable
import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.ui.activity.SessionActivity import net.pokeranalytics.android.ui.activity.SessionActivity
import net.pokeranalytics.android.ui.adapter.HistoryAdapter 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.fragment.components.PokerAnalyticsFragment
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType
import net.pokeranalytics.android.util.data.sessionDao import net.pokeranalytics.android.util.data.sessionDao
class HistoryFragment : PokerAnalyticsFragment() { class HistoryFragment : PokerAnalyticsFragment(), RowRepresentableDataSource, RowRepresentableDelegate {
companion object { companion object {
fun newInstance(): HistoryFragment { fun newInstance(): HistoryFragment {
@ -26,8 +32,8 @@ class HistoryFragment : PokerAnalyticsFragment() {
} }
} }
private lateinit var historyAdapter: HistoryAdapter private lateinit var historyAdapter: RowRepresentableAdapter
private var realmSessions: RealmResults<Session>? = null private lateinit var realmSessions: RealmResults<Session>
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_history, container, false) return inflater.inflate(R.layout.fragment_history, container, false)
@ -41,7 +47,7 @@ class HistoryFragment : PokerAnalyticsFragment() {
override fun onDestroyView() { override fun onDestroyView() {
super.onDestroyView() super.onDestroyView()
realmSessions?.removeAllChangeListeners() realmSessions.removeAllChangeListeners()
} }
/** /**
@ -70,28 +76,34 @@ class HistoryFragment : PokerAnalyticsFragment() {
* Init data * Init data
*/ */
private fun initData() { private fun initData() {
realmSessions = getRealm().sessionDao().findAllSessions() realmSessions = getRealm().sessionDao().findAllSessions()
realmSessions?.let {
val viewManager = LinearLayoutManager(requireContext()) val viewManager = LinearLayoutManager(requireContext())
historyAdapter = HistoryAdapter(it) historyAdapter = RowRepresentableAdapter(this, this)
recyclerView.apply { recyclerView.apply {
setHasFixedSize(true) setHasFixedSize(true)
layoutManager = viewManager layoutManager = viewManager
adapter = historyAdapter adapter = historyAdapter
} }
}
historyAdapter.onClickOnSession = {position, session -> override fun rowRepresentableForPosition(position: Int): RowRepresentable {
SessionActivity.newInstance(requireContext(), sessionId = session.id) return this.realmSessions[position] as RowRepresentable
} }
it.addChangeListener { newSessions -> override fun numberOfRows(): Int {
historyAdapter.notifyDataSetChanged() 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 androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.row_bottom_sheet_grid_title.view.* 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_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.view.*
import kotlinx.android.synthetic.main.row_title_value.view.* import kotlinx.android.synthetic.main.row_title_value.view.*
import kotlinx.android.synthetic.main.row_title_value_action.view.* import kotlinx.android.synthetic.main.row_title_value_action.view.*
import net.pokeranalytics.android.R 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.TableSizeGridAdapter
import net.pokeranalytics.android.ui.adapter.components.RowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.components.RowRepresentableDataSource
@ -33,7 +35,8 @@ enum class RowViewType {
TITLE_VALUE_ACTION, TITLE_VALUE_ACTION,
DATA, DATA,
BOTTOM_SHEET_DATA, BOTTOM_SHEET_DATA,
TITLE_GRID; TITLE_GRID,
ROW_SESSION;
inner class FakeViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), inner class FakeViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView),
BindableHolder { 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 { inner class CellSessionViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), BindableHolder {
override fun bind(row: RowRepresentable, rowRepresentableDataSource: RowRepresentableDataSource?, listener: View.OnClickListener, actionListener: View.OnClickListener?) { override fun bind(row: RowRepresentable, rowRepresentableDataSource: RowRepresentableDataSource?, listener: View.OnClickListener, actionListener: View.OnClickListener?) {
itemView.title.text = row.localizedTitle(itemView.context) itemView.title.text = row.localizedTitle(itemView.context)
@ -163,6 +174,12 @@ enum class RowViewType {
parent, parent,
false) false)
) )
ROW_SESSION -> RowSessionViewHolder(
LayoutInflater.from(parent.context).inflate(
R.layout.row_history_session,
parent,
false)
)
else -> FakeViewHolder(parent) else -> FakeViewHolder(parent)
} }
} }

Loading…
Cancel
Save