Improve bottom sheet list

dev_raz_wip
Aurelien Hubert 7 years ago
parent a71f49b657
commit 72a9c9ab59
  1. 6
      app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt
  2. 16
      app/src/main/java/net/pokeranalytics/android/ui/fragment/NewSessionFragment.kt
  3. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetDateFragment.kt
  4. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetDoubleEditTextFragment.kt
  5. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetDoubleListFragment.kt
  6. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetEditTextFragment.kt
  7. 20
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetFragment.kt
  8. 11
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetListFragment.kt
  9. 10
      app/src/main/res/layout/bottom_sheet_list.xml
  10. 19
      app/src/main/res/layout/fragment_bottom_sheet.xml
  11. 2
      app/src/main/res/layout/row_bottom_sheet_title.xml
  12. 43
      app/src/main/res/layout/row_title.xml

@ -8,11 +8,9 @@ import android.widget.Toast
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import io.realm.Realm import io.realm.Realm
import io.realm.RealmObject import io.realm.RealmObject
import kotlinx.android.synthetic.main.bottom_sheet_bankroll.*
import kotlinx.android.synthetic.main.fragment_editable_data.* import kotlinx.android.synthetic.main.fragment_editable_data.*
import kotlinx.android.synthetic.main.fragment_editable_data.view.* import kotlinx.android.synthetic.main.fragment_editable_data.view.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.realm.Bankroll
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.adapter.components.* import net.pokeranalytics.android.ui.adapter.components.*
import net.pokeranalytics.android.ui.fragment.components.BottomSheetDelegate import net.pokeranalytics.android.ui.fragment.components.BottomSheetDelegate
@ -40,6 +38,10 @@ class EditableDataFragment : PokerAnalyticsFragment(), DynamicRowCallback, Botto
BottomSheetFragment.create(fragmentManager, row, this, ArrayList()) BottomSheetFragment.create(fragmentManager, row, this, ArrayList())
} }
override fun clickOnAdd(row: DynamicRowInterface) {
Toast.makeText(requireContext(), "Add new element: $row", Toast.LENGTH_SHORT).show()
}
override fun setValue(value: Any, row: DynamicRowInterface) { override fun setValue(value: Any, row: DynamicRowInterface) {
Toast.makeText(requireContext(), "Callback for ${row.localizedTitle(requireContext())} ($value)", Toast.LENGTH_SHORT).show() Toast.makeText(requireContext(), "Callback for ${row.localizedTitle(requireContext())} ($value)", Toast.LENGTH_SHORT).show()
} }

@ -9,10 +9,9 @@ import androidx.recyclerview.widget.LinearLayoutManager
import kotlinx.android.synthetic.main.fragment_new_session.* import kotlinx.android.synthetic.main.fragment_new_session.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.ui.activity.EditableDataActivity
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.adapter.components.DynamicListAdapter import net.pokeranalytics.android.ui.adapter.components.*
import net.pokeranalytics.android.ui.adapter.components.DynamicRowCallback
import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface
import net.pokeranalytics.android.ui.fragment.components.BottomSheetDelegate import net.pokeranalytics.android.ui.fragment.components.BottomSheetDelegate
import net.pokeranalytics.android.ui.fragment.components.BottomSheetFragment import net.pokeranalytics.android.ui.fragment.components.BottomSheetFragment
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment
@ -36,6 +35,17 @@ class NewSessionFragment : PokerAnalyticsFragment(), DynamicRowCallback, BottomS
BottomSheetFragment.create(fragmentManager, row, this, data) BottomSheetFragment.create(fragmentManager, row, this, data)
} }
override fun clickOnAdd(row: DynamicRowInterface) {
Toast.makeText(requireContext(), "Add new element: $row", Toast.LENGTH_SHORT).show()
when(row) {
SessionRow.GAME -> EditableDataActivity.newInstance(requireContext(), SettingRow.GAME.ordinal, primaryKey = null)
SessionRow.BANKROLL -> EditableDataActivity.newInstance(requireContext(), SettingRow.BANKROLL.ordinal, primaryKey = null)
SessionRow.LOCATION -> EditableDataActivity.newInstance(requireContext(), SettingRow.LOCATION.ordinal, primaryKey = null)
}
}
override fun setValue(value: Any, row: DynamicRowInterface) { override fun setValue(value: Any, row: DynamicRowInterface) {
Toast.makeText(requireContext(), "Callback for ${row.localizedTitle(requireContext())} ($value)", Toast.LENGTH_SHORT).show() Toast.makeText(requireContext(), "Callback for ${row.localizedTitle(requireContext())} ($value)", Toast.LENGTH_SHORT).show()
} }

@ -18,7 +18,7 @@ class BottomSheetDateFragment : BottomSheetFragment() {
override fun clickOnCheck() { override fun clickOnCheck() {
super.clickOnCheck() super.clickOnCheck()
//TODO: Change that //TODO: Change that
valueDelegate.setValue("", row) bottomSheetDelegate.setValue("", row)
dismiss() dismiss()
} }

@ -19,7 +19,7 @@ class BottomSheetDoubleEditTextFragment : BottomSheetFragment() {
override fun clickOnCheck() { override fun clickOnCheck() {
super.clickOnCheck() super.clickOnCheck()
valueDelegate.setValue("", row) bottomSheetDelegate.setValue("", row)
dismiss() dismiss()
} }

@ -25,7 +25,7 @@ class BottomSheetDoubleListFragment : BottomSheetFragment(), DisplayableDelegate
override fun clickOnCheck() { override fun clickOnCheck() {
super.clickOnCheck() super.clickOnCheck()
//TODO: Change that //TODO: Change that
valueDelegate.setValue("", row) bottomSheetDelegate.setValue("", row)
dismiss() dismiss()
} }

@ -18,7 +18,7 @@ class BottomSheetEditTextFragment : BottomSheetFragment() {
override fun clickOnCheck() { override fun clickOnCheck() {
super.clickOnCheck() super.clickOnCheck()
valueDelegate.setValue("", row) bottomSheetDelegate.setValue("", row)
dismiss() dismiss()
} }
@ -41,8 +41,6 @@ class BottomSheetEditTextFragment : BottomSheetFragment() {
LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_edit_text, view?.bottomSheetContainer, true) LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_edit_text, view?.bottomSheetContainer, true)
} }
} }

@ -5,7 +5,6 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.view.WindowManager import android.view.WindowManager
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentManager
import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import kotlinx.android.synthetic.main.fragment_bottom_sheet.* import kotlinx.android.synthetic.main.fragment_bottom_sheet.*
@ -29,6 +28,7 @@ interface BottomSheetInterface {
} }
interface BottomSheetDelegate { interface BottomSheetDelegate {
fun clickOnAdd(row: DynamicRowInterface)
fun setValue(value: Any, row: DynamicRowInterface) fun setValue(value: Any, row: DynamicRowInterface)
} }
@ -36,7 +36,7 @@ interface BottomSheetDelegate {
open class BottomSheetFragment : BottomSheetDialogFragment(), BottomSheetInterface { open class BottomSheetFragment : BottomSheetDialogFragment(), BottomSheetInterface {
lateinit var row: DynamicRowInterface lateinit var row: DynamicRowInterface
lateinit var valueDelegate: BottomSheetDelegate lateinit var bottomSheetDelegate: BottomSheetDelegate
private var data: ArrayList<BottomSheetData> = ArrayList() private var data: ArrayList<BottomSheetData> = ArrayList()
@ -44,7 +44,7 @@ open class BottomSheetFragment : BottomSheetDialogFragment(), BottomSheetInterfa
fun create( fun create(
fragmentManager: FragmentManager?, fragmentManager: FragmentManager?,
row: DynamicRowInterface, row: DynamicRowInterface,
valueDelegate: BottomSheetDelegate, bottomSheetDelegate: BottomSheetDelegate,
data: ArrayList<BottomSheetData> data: ArrayList<BottomSheetData>
): BottomSheetFragment { ): BottomSheetFragment {
@ -58,20 +58,14 @@ open class BottomSheetFragment : BottomSheetDialogFragment(), BottomSheetInterfa
bottomSheetFragment.show(fragmentManager, "bottomSheet") bottomSheetFragment.show(fragmentManager, "bottomSheet")
bottomSheetFragment.row = row bottomSheetFragment.row = row
bottomSheetFragment.valueDelegate = valueDelegate bottomSheetFragment.bottomSheetDelegate = bottomSheetDelegate
bottomSheetFragment.data = data bottomSheetFragment.data = data
return bottomSheetFragment return bottomSheetFragment
} }
} }
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate( return inflater.inflate(R.layout.fragment_bottom_sheet,container,false)
net.pokeranalytics.android.R.layout.fragment_bottom_sheet,
container,
false
) as ConstraintLayout
return view
} }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@ -93,6 +87,8 @@ open class BottomSheetFragment : BottomSheetDialogFragment(), BottomSheetInterfa
} }
override fun clickOnAdd() { override fun clickOnAdd() {
when (row) {
}
} }
/** /**
@ -113,7 +109,7 @@ open class BottomSheetFragment : BottomSheetDialogFragment(), BottomSheetInterfa
true true
} }
bottomSheetToolbar.menu.findItem(R.id.actionAdd).setOnMenuItemClickListener { bottomSheetToolbar.menu.findItem(R.id.actionAdd).setOnMenuItemClickListener {
clickOnAdd() bottomSheetDelegate.clickOnAdd(row)
true true
} }
bottomSheetToolbar.menu.findItem(R.id.actionCheck).setOnMenuItemClickListener { bottomSheetToolbar.menu.findItem(R.id.actionCheck).setOnMenuItemClickListener {

@ -13,10 +13,12 @@ import net.pokeranalytics.android.model.realm.Game
import net.pokeranalytics.android.ui.adapter.components.DataListAdapter import net.pokeranalytics.android.ui.adapter.components.DataListAdapter
import net.pokeranalytics.android.ui.adapter.components.DisplayableDataSource import net.pokeranalytics.android.ui.adapter.components.DisplayableDataSource
import net.pokeranalytics.android.ui.adapter.components.DisplayableDelegate import net.pokeranalytics.android.ui.adapter.components.DisplayableDelegate
import timber.log.Timber
class BottomSheetListFragment : BottomSheetFragment(), DisplayableDelegate { class BottomSheetListFragment : BottomSheetFragment(), DisplayableDelegate {
private var realmData: RealmResults<*>? = null private var realmData: RealmResults<*>? = null
private lateinit var dataAdapter: DataListAdapter
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
@ -26,12 +28,13 @@ class BottomSheetListFragment : BottomSheetFragment(), DisplayableDelegate {
override fun clickOnCheck() { override fun clickOnCheck() {
super.clickOnCheck() super.clickOnCheck()
valueDelegate.setValue("", row) bottomSheetDelegate.setValue("", row)
dismiss() dismiss()
} }
override fun onStart() { override fun onResume() {
super.onStart() super.onResume()
dataAdapter.notifyDataSetChanged()
} }
override fun data(position: Int): DisplayableDataSource { override fun data(position: Int): DisplayableDataSource {
@ -71,7 +74,7 @@ class BottomSheetListFragment : BottomSheetFragment(), DisplayableDelegate {
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())
val dataAdapter = DataListAdapter(this, R.layout.row_bottom_sheet_title) dataAdapter = DataListAdapter(this, R.layout.row_bottom_sheet_title)
gameNameRecyclerView.apply { gameNameRecyclerView.apply {
setHasFixedSize(true) setHasFixedSize(true)

@ -1,13 +1,11 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="wrap_content">
android:orientation="horizontal">
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/gameNameRecyclerView" android:id="@+id/gameNameRecyclerView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="200dp" />
android:minHeight="200dp" />
</LinearLayout> </FrameLayout>

@ -1,28 +1,21 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@color/gray_dark"> android:background="@color/gray_dark">
<androidx.appcompat.widget.Toolbar <androidx.appcompat.widget.Toolbar
android:id="@+id/bottomSheetToolbar" android:id="@+id/bottomSheetToolbar"
android:layout_width="0dp"
style="@style/PokerAnalyticsTheme.Toolbar" style="@style/PokerAnalyticsTheme.Toolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize" android:layout_height="?actionBarSize"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:title="Test" /> tools:title="Test" />
<FrameLayout <FrameLayout
android:id="@+id/bottomSheetContainer" android:id="@+id/bottomSheetContainer"
android:layout_width="0dp" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content" />
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/bottomSheetToolbar" />
</androidx.constraintlayout.widget.ConstraintLayout> </LinearLayout>

@ -4,8 +4,8 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container" android:id="@+id/container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:background="@color/kaki_medium"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/kaki_medium"
android:foreground="?selectableItemBackground" android:foreground="?selectableItemBackground"
android:padding="8dp"> android:padding="8dp">

@ -1,27 +1,26 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="?selectableItemBackground" android:background="?selectableItemBackground"
android:id="@+id/container" android:padding="16dp">
android:padding="16dp">
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/title" android:id="@+id/title"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginStart="8dp"
android:layout_marginEnd="8dp" android:layout_marginTop="8dp"
android:layout_marginTop="8dp" android:layout_marginEnd="8dp"
android:textSize="20sp" android:layout_marginBottom="8dp"
tools:text="Data Type Title" android:textSize="20sp"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginStart="8dp" app:layout_constraintStart_toStartOf="parent"
android:layout_marginBottom="8dp" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/> tools:text="Data Type Title" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
Loading…
Cancel
Save