From 5adcd4363d19c160966f5667ac5d5f320c086e20 Mon Sep 17 00:00:00 2001 From: Laurent Date: Wed, 13 Feb 2019 11:38:58 +0100 Subject: [PATCH] Dynamic Table draft --- .../adapter/components/DynamicListAdapter.kt | 58 ++++++++++++++++ .../adapter/components/DynamicRowInterface.kt | 67 +++++++++++++++++++ .../ui/adapter/components/RowViewType.kt | 19 ++++++ .../components/DynamicListFragment.kt | 10 +++ 4 files changed, 154 insertions(+) create mode 100644 app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicListAdapter.kt create mode 100644 app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicRowInterface.kt create mode 100644 app/src/main/java/net/pokeranalytics/android/ui/adapter/components/RowViewType.kt create mode 100644 app/src/main/java/net/pokeranalytics/android/ui/fragment/components/DynamicListFragment.kt diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicListAdapter.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicListAdapter.kt new file mode 100644 index 00000000..ef13d20e --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicListAdapter.kt @@ -0,0 +1,58 @@ +package net.pokeranalytics.android.ui.adapter.components + +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView + +enum class RowType { + + + +} + +//interface RowDelegate { +// +// fun groupedRow() : ArrayList() +// fun (row: DynamicRowInterface) : String +//} + + +class DynamicListAdapter : RecyclerView.Adapter() { + + var groupedRows = ArrayList() + + override fun getItemViewType(position: Int): Int { + + var sectionIndex: Int = 0 + var rowIndex: Int = position + while (rowIndex >= this.groupedRows[sectionIndex].size + 1) { + rowIndex -= (groupedRows[sectionIndex].size + 1) + sectionIndex++ + } + + if (rowIndex == 0) { + return this.groupedRows[sectionIndex].viewType + } else { + return this.groupedRows[sectionIndex].rows[rowIndex - 1].viewType + } + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + val rowViewType: RowViewType = RowViewType.values()[viewType] + return rowViewType.viewHolder(parent) + } + + override fun getItemCount(): Int { + + return this.groupedRows.size + this.groupedRows.fold(0) { acc: Int, group: RowGroup -> + return acc + group.size + } + + } + + + + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } + +} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicRowInterface.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicRowInterface.kt new file mode 100644 index 00000000..da7fc074 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicRowInterface.kt @@ -0,0 +1,67 @@ +package net.pokeranalytics.android.ui.adapter.components + +import android.content.Context +import net.pokeranalytics.android.R + + +class RowGroup(stringRes: Int?, rows: ArrayList) : DynamicRowInterface { + + var stringRes: Int? = stringRes + var rows: ArrayList = rows + + var size: Int = 0 + get() { + return this.rows.size + } + + + override fun localizedTitle(context: Context): String? { + stringRes?.let { + return context.getString(it) + } + return null + } + + override var viewType: Int = 0 + +} + +interface DynamicRowInterface { + + fun localizedTitle(context: Context): String? + var viewType: Int + +} + +enum class SessionRow(val resId: Int) : DynamicRowInterface { + BLINDS(R.string.app_name), + GAME(R.string.app_name), + DATE(R.string.app_name); + + override fun localizedTitle(context: Context): String? { + return context.getString(this.resId) + } + + override var viewType: Int = RowViewType.HEADER.ordinal + get() { + return when (this) { + BLINDS -> 1 + GAME -> 2 + DATE -> 1 + } + } + +} + +enum class BankrollRow(val resId: Int) : DynamicRowInterface { + NAME(R.string.app_name), + LIVE(R.string.app_name), + CURRENCY(R.string.app_name); + + override fun localizedTitle(context: Context): String? { + return context.getString(this.resId) + } + + override var viewType: Int = 1 + +} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/RowViewType.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/RowViewType.kt new file mode 100644 index 00000000..d9a5d0c4 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/RowViewType.kt @@ -0,0 +1,19 @@ +package net.pokeranalytics.android.ui.adapter.components + +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView + +enum class RowViewType { + HEADER, + TEXTFIELD; + + inner class PlaceholderViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + + } + + fun viewHolder(parent: ViewGroup) : RecyclerView.ViewHolder { + return PlaceholderViewHolder(parent) + } + +} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/DynamicListFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/DynamicListFragment.kt new file mode 100644 index 00000000..73825311 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/DynamicListFragment.kt @@ -0,0 +1,10 @@ +package net.pokeranalytics.android.ui.fragment.components + +import androidx.recyclerview.widget.RecyclerView +import net.pokeranalytics.android.util.PokerAnalyticsFragment + +open class DynamicListFragment : PokerAnalyticsFragment() { + + + +} \ No newline at end of file