From a1a4f323028a2947e84cec62192484ffe3458bb9 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Fri, 22 Feb 2019 08:58:31 +0100 Subject: [PATCH] Fix LiveDataAdapter --- .../ui/adapter/components/LiveDataAdapter.kt | 34 ++++++++++++++----- .../bottomsheet/BottomSheetListFragment.kt | 3 +- .../BottomSheetListGameFragment.kt | 3 +- 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/LiveDataAdapter.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/LiveDataAdapter.kt index 2528a469..5cb5cbfe 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/LiveDataAdapter.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/LiveDataAdapter.kt @@ -9,6 +9,11 @@ import androidx.recyclerview.widget.RecyclerView import net.pokeranalytics.android.R import net.pokeranalytics.android.ui.view.RowViewType +enum class LiveDataViewType { + DATA, + BOTTOM_SHEET_DATA +} + interface LiveDataDataSource { val title: String val primaryKey: String @@ -20,17 +25,20 @@ interface LiveDataDelegate { fun size() : Int } -class LiveDataAdapter(var adapterDelegate: LiveDataDelegate, var layout: Int? = null) : RecyclerView.Adapter() { +class LiveDataAdapter(var adapterDelegate: LiveDataDelegate, var liveDataViewType: LiveDataViewType? = LiveDataViewType.DATA) : RecyclerView.Adapter() { inner class DataViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { fun bind(row: LiveDataDataSource, listener: View.OnClickListener) { - try { - itemView.findViewById(R.id.title).text = row.title - itemView.findViewById(R.id.container).setOnClickListener(listener) - } catch (e: Exception) { - e.printStackTrace() + when(liveDataViewType) { + LiveDataViewType.DATA -> { + itemView.findViewById(R.id.rowTitle_title).text = row.title + itemView.findViewById(R.id.rowTitle_container).setOnClickListener(listener) + } + LiveDataViewType.BOTTOM_SHEET_DATA -> { + itemView.findViewById(R.id.title).text = row.title + itemView.findViewById(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 { - val layoutToInflate = layout ?: R.layout.row_title - return DataViewHolder(LayoutInflater.from(parent.context).inflate(layoutToInflate, parent, false)) + 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)) } override fun getItemCount(): Int { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListFragment.kt index 7f083f62..2131c53e 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListFragment.kt @@ -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.LiveDataDataSource import net.pokeranalytics.android.ui.adapter.components.LiveDataDelegate +import net.pokeranalytics.android.ui.adapter.components.LiveDataViewType class BottomSheetListFragment : BottomSheetFragment(), LiveDataDelegate { @@ -69,7 +70,7 @@ class BottomSheetListFragment : BottomSheetFragment(), LiveDataDelegate { LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_list, view?.bottomSheetContainer, true) val viewManager = LinearLayoutManager(requireContext()) - dataAdapter = LiveDataAdapter(this, R.layout.row_bottom_sheet_title) + dataAdapter = LiveDataAdapter(this, LiveDataViewType.BOTTOM_SHEET_DATA) reyclerView.apply { setHasFixedSize(true) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListGameFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListGameFragment.kt index 08fcce2d..f97672fd 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListGameFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListGameFragment.kt @@ -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.LiveDataDataSource import net.pokeranalytics.android.ui.adapter.components.LiveDataDelegate +import net.pokeranalytics.android.ui.adapter.components.LiveDataViewType import timber.log.Timber @@ -90,7 +91,7 @@ class BottomSheetListGameFragment : BottomSheetFragment(), LiveDataDelegate { val viewManager2 = LinearLayoutManager(requireContext()) - dataAdapter = LiveDataAdapter(this, R.layout.row_bottom_sheet_title) + dataAdapter = LiveDataAdapter(this, LiveDataViewType.BOTTOM_SHEET_DATA) recyclerView2.apply { setHasFixedSize(true)