custom recylcer view using separator itemdecoration

feature/top10
Razmig Sarkissian 7 years ago
parent d5f941b7c1
commit 63c424e1a0
  1. 2
      app/src/main/java/net/pokeranalytics/android/model/LiveData.kt
  2. 2
      app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableAdapter.kt
  3. 37
      app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableRecyclerView.kt
  4. 11
      app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt
  5. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetEditTextFragment.kt
  6. 6
      app/src/main/res/drawable/separator.xml
  7. 2
      app/src/main/res/layout/fragment_settings.xml

@ -62,7 +62,7 @@ enum class LiveData : Localizable {
fun updateOrCreate(realm:Realm, primaryKey:String?): RealmObject { fun updateOrCreate(realm:Realm, primaryKey:String?): RealmObject {
val proxyItem: RealmObject? = this.getData(realm, primaryKey) val proxyItem: RealmObject? = this.getData(realm, primaryKey)
proxyItem?.let { proxyItem?.let {
return proxyItem return realm.copyFromRealm(it)
} ?: run { } ?: run {
return this.newEntity() return this.newEntity()
} }

@ -3,7 +3,9 @@ package net.pokeranalytics.android.ui.adapter
import android.os.Handler import android.os.Handler
import android.view.ViewGroup import android.view.ViewGroup
import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.fragment_settings.*
import net.pokeranalytics.android.ui.view.BindableHolder import net.pokeranalytics.android.ui.view.BindableHolder
import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable

@ -0,0 +1,37 @@
package net.pokeranalytics.android.ui.adapter
import android.content.Context
import android.util.AttributeSet
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.RecyclerView
import net.pokeranalytics.android.R
class RowRepresentableRecyclerView : RecyclerView {
/**
* Constructors
*/
constructor(context: Context) : super(context) {
init()
}
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
init()
}
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {
init()
}
/**
* Init
*
* @param attrs
*/
private fun init() {
val itemDecorator = DividerItemDecoration(this.context, DividerItemDecoration.VERTICAL)
itemDecorator.setDrawable(ContextCompat.getDrawable(this.context!!, R.drawable.separator)!!)
this.addItemDecoration(itemDecorator)
}
}

@ -4,7 +4,11 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.Toast
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.fragment_settings.* import kotlinx.android.synthetic.main.fragment_settings.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.activity.DataListActivity import net.pokeranalytics.android.ui.activity.DataListActivity
@ -50,8 +54,15 @@ class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDataSource,
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) {
when (row) {
SettingRow.GDPR -> Toast.makeText(requireContext(), "Show GDPR", Toast.LENGTH_SHORT).show()
}
row.relatedResultsRepresentable?.let {
DataListActivity.newInstance(requireContext(), (row as SettingRow).ordinal) DataListActivity.newInstance(requireContext(), (row as SettingRow).ordinal)
} }
}
/** /**
* Init data * Init data

@ -27,7 +27,7 @@ class BottomSheetEditTextFragment : BottomSheetFragment() {
} }
override fun getValue(): Any? { override fun getValue(): Any? {
return value return value.trim()
} }
/** /**
@ -56,7 +56,7 @@ class BottomSheetEditTextFragment : BottomSheetFragment() {
editText1.setOnEditorActionListener { v, actionId, event -> editText1.setOnEditorActionListener { v, actionId, event ->
if (actionId == EditorInfo.IME_ACTION_DONE) { if (actionId == EditorInfo.IME_ACTION_DONE) {
delegate.onRowValueChanged(value, row) delegate.onRowValueChanged(getValue(), row)
dismiss() dismiss()
true true
} else { } else {

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/white_transparent"/>
<size android:height="0.5dp"/>
</shape>

@ -5,7 +5,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView <net.pokeranalytics.android.ui.adapter.RowRepresentableRecyclerView
android:id="@+id/recyclerView" android:id="@+id/recyclerView"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"

Loading…
Cancel
Save