avoiding unneeded cast by providing more types
This commit is contained in:
parent
6c21ed8eab
commit
90d00b96b7
@ -36,9 +36,8 @@ class DebugFeaturesSettingsActivity : VectorBaseActivity<FragmentGenericRecycler
|
|||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
controller.listener = object : EnumFeatureItem.Listener {
|
controller.listener = object : EnumFeatureItem.Listener {
|
||||||
@Suppress("UNCHECKED_CAST")
|
override fun <T : Enum<T>> onOptionSelected(option: T?, feature: Feature.EnumFeature<T>) {
|
||||||
override fun <T : Enum<T>> onOptionSelected(option: Any?, feature: Feature.EnumFeature<T>) {
|
debugFeatures.overrideEnum(option, feature.type)
|
||||||
debugFeatures.overrideEnum(option as? T, feature.type)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
views.genericRecyclerView.configureWith(controller)
|
views.genericRecyclerView.configureWith(controller)
|
||||||
|
@ -53,10 +53,7 @@ abstract class EnumFeatureItem : VectorEpoxyModel<EnumFeatureItem.Holder>() {
|
|||||||
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
|
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
|
||||||
when (position) {
|
when (position) {
|
||||||
0 -> listener?.onOptionSelected(option = null, feature)
|
0 -> listener?.onOptionSelected(option = null, feature)
|
||||||
else -> {
|
else -> feature.onOptionSelected(position - 1)
|
||||||
val option: Any = feature.options[position - 1]
|
|
||||||
listener?.onOptionSelected(option, feature)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,12 +64,16 @@ abstract class EnumFeatureItem : VectorEpoxyModel<EnumFeatureItem.Holder>() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun <T : Enum<T>> Feature.EnumFeature<T>.onOptionSelected(selection: Int) {
|
||||||
|
listener?.onOptionSelected(options[selection], this)
|
||||||
|
}
|
||||||
|
|
||||||
class Holder : VectorEpoxyHolder() {
|
class Holder : VectorEpoxyHolder() {
|
||||||
val label by bind<TextView>(im.vector.app.R.id.feature_label)
|
val label by bind<TextView>(im.vector.app.R.id.feature_label)
|
||||||
val optionsSpinner by bind<Spinner>(im.vector.app.R.id.feature_options)
|
val optionsSpinner by bind<Spinner>(im.vector.app.R.id.feature_options)
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Listener {
|
interface Listener {
|
||||||
fun <T : Enum<T>> onOptionSelected(option: Any?, feature: Feature.EnumFeature<T>)
|
fun <T : Enum<T>> onOptionSelected(option: T?, feature: Feature.EnumFeature<T>)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user