|
|
|
|
@ -8,16 +8,14 @@ import io.realm.RealmResults |
|
|
|
|
import kotlinx.android.synthetic.main.bottom_sheet_list.* |
|
|
|
|
import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.* |
|
|
|
|
import net.pokeranalytics.android.R |
|
|
|
|
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 |
|
|
|
|
import net.pokeranalytics.android.ui.adapter.components.* |
|
|
|
|
import net.pokeranalytics.android.ui.view.RowRepresentable |
|
|
|
|
import net.pokeranalytics.android.ui.view.RowViewType |
|
|
|
|
|
|
|
|
|
class BottomSheetListFragment : BottomSheetFragment(), LiveDataDelegate { |
|
|
|
|
class BottomSheetListFragment : BottomSheetFragment(), RowRepresentableDataSource, RowRepresentableDelegate { |
|
|
|
|
|
|
|
|
|
private var realmData: RealmResults<*>? = null |
|
|
|
|
private lateinit var dataAdapter: LiveDataAdapter |
|
|
|
|
private lateinit var dataAdapter: RowRepresentableAdapter |
|
|
|
|
|
|
|
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { |
|
|
|
|
super.onViewCreated(view, savedInstanceState) |
|
|
|
|
@ -30,15 +28,32 @@ class BottomSheetListFragment : BottomSheetFragment(), LiveDataDelegate { |
|
|
|
|
dataAdapter.notifyDataSetChanged() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun data(position: Int): LiveDataDataSource { |
|
|
|
|
override fun rowRepresentableForPosition(position: Int): RowRepresentable { |
|
|
|
|
realmData?.let { |
|
|
|
|
return it[position] as LiveDataDataSource |
|
|
|
|
return it[position] as RowRepresentable |
|
|
|
|
} |
|
|
|
|
//TODO: Change that |
|
|
|
|
return Game() |
|
|
|
|
return super.rowRepresentableForPosition(position) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun onRowSelected(position: Int) { |
|
|
|
|
override fun numberOfRows(): Int { |
|
|
|
|
realmData?.let { |
|
|
|
|
return it.size |
|
|
|
|
} |
|
|
|
|
return super.numberOfRows() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun viewTypeForPosition(position: Int): Int { |
|
|
|
|
return RowViewType.BOTTOM_SHEET_DATA.ordinal |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun indexForRow(row: RowRepresentable): Int { |
|
|
|
|
realmData?.let { |
|
|
|
|
return it.indexOf(row) |
|
|
|
|
} |
|
|
|
|
return super.indexForRow(row) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun onIndexSelected(position: Int) { |
|
|
|
|
realmData?.let { |
|
|
|
|
val selectedData = it[position] |
|
|
|
|
selectedData?.let {data -> |
|
|
|
|
@ -46,10 +61,7 @@ class BottomSheetListFragment : BottomSheetFragment(), LiveDataDelegate { |
|
|
|
|
dismiss() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun size(): Int { |
|
|
|
|
return realmData?.size ?: 0 |
|
|
|
|
super.onIndexSelected(position) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
@ -70,7 +82,7 @@ class BottomSheetListFragment : BottomSheetFragment(), LiveDataDelegate { |
|
|
|
|
LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_list, view?.bottomSheetContainer, true) |
|
|
|
|
|
|
|
|
|
val viewManager = LinearLayoutManager(requireContext()) |
|
|
|
|
dataAdapter = LiveDataAdapter(this, LiveDataViewType.BOTTOM_SHEET_DATA) |
|
|
|
|
dataAdapter = RowRepresentableAdapter(this, this) |
|
|
|
|
|
|
|
|
|
reyclerView.apply { |
|
|
|
|
setHasFixedSize(true) |
|
|
|
|
|