Fix LiveDataAdapter

feature/top10
Aurelien Hubert 7 years ago
parent 822142976f
commit a1a4f32302
  1. 28
      app/src/main/java/net/pokeranalytics/android/ui/adapter/components/LiveDataAdapter.kt
  2. 3
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListFragment.kt
  3. 3
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListGameFragment.kt

@ -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) {
LiveDataViewType.DATA -> {
itemView.findViewById<AppCompatTextView>(R.id.rowTitle_title).text = row.title
itemView.findViewById<ConstraintLayout>(R.id.rowTitle_container).setOnClickListener(listener)
}
LiveDataViewType.BOTTOM_SHEET_DATA -> {
itemView.findViewById<AppCompatTextView>(R.id.title).text = row.title itemView.findViewById<AppCompatTextView>(R.id.title).text = row.title
itemView.findViewById<ConstraintLayout>(R.id.container).setOnClickListener(listener) itemView.findViewById<ConstraintLayout>(R.id.container).setOnClickListener(listener)
} catch (e: Exception) {
e.printStackTrace()
} }
}
} }
} }
@ -39,7 +47,15 @@ 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) {
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)) return DataViewHolder(LayoutInflater.from(parent.context).inflate(layoutToInflate, parent, false))
} }

@ -12,6 +12,7 @@ import net.pokeranalytics.android.model.realm.Game
import net.pokeranalytics.android.ui.adapter.components.LiveDataAdapter import net.pokeranalytics.android.ui.adapter.components.LiveDataAdapter
import net.pokeranalytics.android.ui.adapter.components.LiveDataDataSource import net.pokeranalytics.android.ui.adapter.components.LiveDataDataSource
import net.pokeranalytics.android.ui.adapter.components.LiveDataDelegate import net.pokeranalytics.android.ui.adapter.components.LiveDataDelegate
import net.pokeranalytics.android.ui.adapter.components.LiveDataViewType
class BottomSheetListFragment : BottomSheetFragment(), LiveDataDelegate { class BottomSheetListFragment : BottomSheetFragment(), LiveDataDelegate {
@ -69,7 +70,7 @@ class BottomSheetListFragment : BottomSheetFragment(), LiveDataDelegate {
LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_list, view?.bottomSheetContainer, true) LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_list, view?.bottomSheetContainer, true)
val viewManager = LinearLayoutManager(requireContext()) val viewManager = LinearLayoutManager(requireContext())
dataAdapter = LiveDataAdapter(this, R.layout.row_bottom_sheet_title) dataAdapter = LiveDataAdapter(this, LiveDataViewType.BOTTOM_SHEET_DATA)
reyclerView.apply { reyclerView.apply {
setHasFixedSize(true) setHasFixedSize(true)

@ -13,6 +13,7 @@ import net.pokeranalytics.android.ui.adapter.LimitTypesAdapter
import net.pokeranalytics.android.ui.adapter.components.LiveDataAdapter import net.pokeranalytics.android.ui.adapter.components.LiveDataAdapter
import net.pokeranalytics.android.ui.adapter.components.LiveDataDataSource import net.pokeranalytics.android.ui.adapter.components.LiveDataDataSource
import net.pokeranalytics.android.ui.adapter.components.LiveDataDelegate import net.pokeranalytics.android.ui.adapter.components.LiveDataDelegate
import net.pokeranalytics.android.ui.adapter.components.LiveDataViewType
import timber.log.Timber import timber.log.Timber
@ -90,7 +91,7 @@ class BottomSheetListGameFragment : BottomSheetFragment(), LiveDataDelegate {
val viewManager2 = LinearLayoutManager(requireContext()) val viewManager2 = LinearLayoutManager(requireContext())
dataAdapter = LiveDataAdapter(this, R.layout.row_bottom_sheet_title) dataAdapter = LiveDataAdapter(this, LiveDataViewType.BOTTOM_SHEET_DATA)
recyclerView2.apply { recyclerView2.apply {
setHasFixedSize(true) setHasFixedSize(true)

Loading…
Cancel
Save