|
|
|
@ -9,6 +9,11 @@ import androidx.recyclerview.widget.RecyclerView |
|
|
|
import net.pokeranalytics.android.R |
|
|
|
import net.pokeranalytics.android.R |
|
|
|
import net.pokeranalytics.android.ui.view.RowViewType |
|
|
|
import net.pokeranalytics.android.ui.view.RowViewType |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
enum class LiveDataViewType { |
|
|
|
|
|
|
|
DATA, |
|
|
|
|
|
|
|
BOTTOM_SHEET_DATA |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
interface LiveDataDataSource { |
|
|
|
interface LiveDataDataSource { |
|
|
|
val title: String |
|
|
|
val title: String |
|
|
|
val primaryKey: String |
|
|
|
val primaryKey: String |
|
|
|
@ -20,17 +25,20 @@ interface LiveDataDelegate { |
|
|
|
fun size() : Int |
|
|
|
fun size() : Int |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
class LiveDataAdapter(var adapterDelegate: LiveDataDelegate, var layout: Int? = null) : RecyclerView.Adapter<RecyclerView.ViewHolder>() { |
|
|
|
class LiveDataAdapter(var adapterDelegate: LiveDataDelegate, var liveDataViewType: LiveDataViewType? = LiveDataViewType.DATA) : RecyclerView.Adapter<RecyclerView.ViewHolder>() { |
|
|
|
|
|
|
|
|
|
|
|
inner class DataViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { |
|
|
|
inner class DataViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { |
|
|
|
fun bind(row: LiveDataDataSource, listener: View.OnClickListener) { |
|
|
|
fun bind(row: LiveDataDataSource, listener: View.OnClickListener) { |
|
|
|
try { |
|
|
|
when(liveDataViewType) { |
|
|
|
itemView.findViewById<AppCompatTextView>(R.id.title).text = row.title |
|
|
|
LiveDataViewType.DATA -> { |
|
|
|
itemView.findViewById<ConstraintLayout>(R.id.container).setOnClickListener(listener) |
|
|
|
itemView.findViewById<AppCompatTextView>(R.id.rowTitle_title).text = row.title |
|
|
|
} catch (e: Exception) { |
|
|
|
itemView.findViewById<ConstraintLayout>(R.id.rowTitle_container).setOnClickListener(listener) |
|
|
|
e.printStackTrace() |
|
|
|
} |
|
|
|
|
|
|
|
LiveDataViewType.BOTTOM_SHEET_DATA -> { |
|
|
|
|
|
|
|
itemView.findViewById<AppCompatTextView>(R.id.title).text = row.title |
|
|
|
|
|
|
|
itemView.findViewById<ConstraintLayout>(R.id.container).setOnClickListener(listener) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -39,8 +47,16 @@ class LiveDataAdapter(var adapterDelegate: LiveDataDelegate, var layout: Int? = |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { |
|
|
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { |
|
|
|
val layoutToInflate = layout ?: R.layout.row_title |
|
|
|
val layoutToInflate = when(liveDataViewType) { |
|
|
|
return DataViewHolder(LayoutInflater.from(parent.context).inflate(layoutToInflate, parent, false)) |
|
|
|
LiveDataViewType.DATA -> { |
|
|
|
|
|
|
|
R.layout.row_title |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
LiveDataViewType.BOTTOM_SHEET_DATA -> { |
|
|
|
|
|
|
|
R.layout.row_bottom_sheet_title |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else -> R.layout.row_title |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return DataViewHolder(LayoutInflater.from(parent.context).inflate(layoutToInflate, parent, false)) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
override fun getItemCount(): Int { |
|
|
|
override fun getItemCount(): Int { |
|
|
|
|