|
|
|
|
@ -3,22 +3,37 @@ package net.pokeranalytics.android.ui.adapter.components |
|
|
|
|
import android.view.View |
|
|
|
|
import android.view.ViewGroup |
|
|
|
|
import androidx.recyclerview.widget.RecyclerView |
|
|
|
|
import net.pokeranalytics.android.ui.view.DynamicHolder |
|
|
|
|
import net.pokeranalytics.android.ui.view.BindableHolder |
|
|
|
|
import net.pokeranalytics.android.ui.view.RowRepresentable |
|
|
|
|
import net.pokeranalytics.android.ui.view.RowViewType |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* An interface used to provide RowRepresentableAdapter content and value in the form of rows |
|
|
|
|
*/ |
|
|
|
|
interface RowRepresentableDataSource { |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Returns a list of rows |
|
|
|
|
*/ |
|
|
|
|
fun adapterRows(): ArrayList<RowRepresentable> |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Returns a boolean for a specific row |
|
|
|
|
*/ |
|
|
|
|
fun boolForRow(row: RowRepresentable): Boolean { |
|
|
|
|
return false |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Returns a string for a specific row |
|
|
|
|
*/ |
|
|
|
|
fun stringForRow(row: RowRepresentable): String { |
|
|
|
|
return "" |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Returns an action icon identifier for a specific row |
|
|
|
|
*/ |
|
|
|
|
fun actionIconForRow(row: RowRepresentable): Int? { |
|
|
|
|
return 0 |
|
|
|
|
} |
|
|
|
|
@ -34,14 +49,25 @@ interface RowRepresentableDataSource { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* A delegate used to propagate UI actions |
|
|
|
|
*/ |
|
|
|
|
interface RowRepresentableDelegate { |
|
|
|
|
fun onRowSelected(row: RowRepresentable) {} |
|
|
|
|
fun onActionSelected(row: RowRepresentable) {} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* An adapter capable of displaying a list of RowRepresentables |
|
|
|
|
* @param rowRepresentableDataSource the datasource providing rows |
|
|
|
|
* @param rowRepresentableDelegate the delegate, notified of UI actions |
|
|
|
|
*/ |
|
|
|
|
class RowRepresentableAdapter(var rowRepresentableDataSource: RowRepresentableDataSource, var rowRepresentableDelegate: RowRepresentableDelegate? = null) : |
|
|
|
|
RecyclerView.Adapter<RecyclerView.ViewHolder>() { |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* The list of rows to display |
|
|
|
|
*/ |
|
|
|
|
private var rows: ArrayList<RowRepresentable> = ArrayList() |
|
|
|
|
|
|
|
|
|
init { |
|
|
|
|
@ -72,7 +98,7 @@ class RowRepresentableAdapter(var rowRepresentableDataSource: RowRepresentableDa |
|
|
|
|
rowRepresentableDelegate?.onActionSelected(dynamicRow) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
(holder as DynamicHolder).bind(dynamicRow, this.rowRepresentableDataSource, listener, actionListener) |
|
|
|
|
(holder as BindableHolder).bind(dynamicRow, this.rowRepresentableDataSource, listener, actionListener) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|