Dynamic Table draft

dev_raz_wip
Laurent 7 years ago
parent 05b9ae094d
commit 5adcd4363d
  1. 58
      app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicListAdapter.kt
  2. 67
      app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicRowInterface.kt
  3. 19
      app/src/main/java/net/pokeranalytics/android/ui/adapter/components/RowViewType.kt
  4. 10
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/DynamicListFragment.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<RowGroup>()
// fun (row: DynamicRowInterface) : String
//}
class DynamicListAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
var groupedRows = ArrayList<RowGroup>()
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.
}
}

@ -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>) : DynamicRowInterface {
var stringRes: Int? = stringRes
var rows: ArrayList<DynamicRowInterface> = 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
}

@ -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)
}
}

@ -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() {
}
Loading…
Cancel
Save