From 4292c6f7947462253c3e436faa925aaa13027fd5 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Tue, 19 Mar 2019 09:06:14 +0100 Subject: [PATCH] Improve stability and fix crashes --- .../android/ui/fragment/StatsFragment.kt | 48 ++++++++++++------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt index 0d68efc2..3a00f7ae 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt @@ -29,6 +29,9 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc get() = Dispatchers.Main private var rowRepresentables: ArrayList = ArrayList() + private var stringAll = "" + private var stringCashGame = "" + private var stringTournament = "" private lateinit var statsAdapter: RowRepresentableAdapter @@ -54,6 +57,8 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) initData() + initUI() + launchStatComputation() } // Row Representable DS @@ -103,10 +108,28 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc */ private fun initData() { + this.stringAll = getString(R.string.all) + this.stringCashGame = getString(R.string.cash_game) + this.stringTournament = getString(R.string.tournament) + this.statsAdapter = RowRepresentableAdapter(this) - this.launchStatComputation() } + /** + * Init UI + */ + private fun initUI() { + + val viewManager = LinearLayoutManager(requireContext()) + + recyclerView.apply { + setHasFixedSize(true) + layoutManager = viewManager + adapter = statsAdapter + } + } + + private fun launchStatComputation() { // Thread() { @@ -144,7 +167,10 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc } test.await() - showResults(results) + + if (!isDetached) { + showResults(results) + } } } @@ -175,13 +201,11 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc } val allStats: List = listOf(Stat.NETRESULT, Stat.HOURLY_RATE, Stat.AVERAGE, Stat.NUMBER_OF_SETS, Stat.AVERAGE_DURATION, Stat.DURATION) - val allSessionGroup = SessionGroup(getString(R.string.all), sessionsList, allStats) + val allSessionGroup = SessionGroup(stringAll, sessionsList, allStats) val cgStats: List = listOf(Stat.NETRESULT, Stat.HOURLY_RATE, Stat.NET_BB_PER_100_HANDS, Stat.HOURLY_RATE_BB, Stat.AVERAGE, Stat.STANDARD_DEVIATION_HOURLY, Stat.WIN_RATIO, Stat.NUMBER_OF_GAMES, Stat.AVERAGE_BUYIN) - val cgSessionGroup = SessionGroup(getString(R.string.cash_game), cgSessions, cgStats) + val cgSessionGroup = SessionGroup(stringCashGame, cgSessions, cgStats) val tStats: List = listOf(Stat.NETRESULT, Stat.HOURLY_RATE, Stat.ROI, Stat.WIN_RATIO, Stat.NUMBER_OF_GAMES, Stat.AVERAGE_BUYIN) - val tSessionGroup = SessionGroup(getString(R.string.tournament), tSessions, tStats) - - + val tSessionGroup = SessionGroup(stringTournament, tSessions, tStats) Timber.d(">>>>> Start computations...") @@ -190,16 +214,8 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc } private fun showResults(results: List) { - this.rowRepresentables = this.convertResultsIntoRepresentables(results) - - val viewManager = LinearLayoutManager(requireContext()) - - recyclerView.apply { - setHasFixedSize(true) - layoutManager = viewManager - adapter = statsAdapter - } + statsAdapter.notifyDataSetChanged() } private fun convertResultsIntoRepresentables(results: List) : ArrayList {