mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-24 06:39:46 -06:00
Android: Make AdvancedMappingControlViewHolder a LifecycleOwner
This commit is contained in:
@ -4,12 +4,16 @@ package org.dolphinemu.dolphinemu.features.input.ui
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import org.dolphinemu.dolphinemu.databinding.ListItemAdvancedMappingControlBinding
|
||||
import java.util.function.Consumer
|
||||
|
||||
class AdvancedMappingControlAdapter(private val onClickCallback: Consumer<String>) :
|
||||
RecyclerView.Adapter<AdvancedMappingControlViewHolder>() {
|
||||
class AdvancedMappingControlAdapter(
|
||||
private val parentLifecycle: Lifecycle,
|
||||
private val onClickCallback: Consumer<String>
|
||||
) : RecyclerView.Adapter<AdvancedMappingControlViewHolder>() {
|
||||
|
||||
private var controls = emptyArray<String>()
|
||||
|
||||
override fun onCreateViewHolder(
|
||||
@ -18,7 +22,7 @@ class AdvancedMappingControlAdapter(private val onClickCallback: Consumer<String
|
||||
): AdvancedMappingControlViewHolder {
|
||||
val inflater = LayoutInflater.from(parent.context)
|
||||
val binding = ListItemAdvancedMappingControlBinding.inflate(inflater)
|
||||
return AdvancedMappingControlViewHolder(binding, onClickCallback)
|
||||
return AdvancedMappingControlViewHolder(binding, parentLifecycle, onClickCallback)
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(holder: AdvancedMappingControlViewHolder, position: Int) =
|
||||
@ -30,4 +34,19 @@ class AdvancedMappingControlAdapter(private val onClickCallback: Consumer<String
|
||||
this.controls = controls
|
||||
notifyDataSetChanged()
|
||||
}
|
||||
|
||||
override fun onViewRecycled(holder: AdvancedMappingControlViewHolder) {
|
||||
super.onViewRecycled(holder)
|
||||
holder.onViewRecycled()
|
||||
}
|
||||
|
||||
override fun onViewAttachedToWindow(holder: AdvancedMappingControlViewHolder) {
|
||||
super.onViewAttachedToWindow(holder)
|
||||
holder.onViewAttachedToWindow()
|
||||
}
|
||||
|
||||
override fun onViewDetachedFromWindow(holder: AdvancedMappingControlViewHolder) {
|
||||
super.onViewDetachedFromWindow(holder)
|
||||
holder.onViewDetachedFromWindow()
|
||||
}
|
||||
}
|
||||
|
@ -2,14 +2,17 @@
|
||||
|
||||
package org.dolphinemu.dolphinemu.features.input.ui
|
||||
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import org.dolphinemu.dolphinemu.databinding.ListItemAdvancedMappingControlBinding
|
||||
import org.dolphinemu.dolphinemu.utils.LifecycleViewHolder
|
||||
import java.util.function.Consumer
|
||||
|
||||
class AdvancedMappingControlViewHolder(
|
||||
private val binding: ListItemAdvancedMappingControlBinding,
|
||||
parentLifecycle: Lifecycle,
|
||||
onClickCallback: Consumer<String>
|
||||
) : RecyclerView.ViewHolder(binding.root) {
|
||||
) : LifecycleViewHolder(binding.root, parentLifecycle) {
|
||||
|
||||
private lateinit var name: String
|
||||
|
||||
init {
|
||||
|
@ -38,8 +38,9 @@ class AdvancedMappingDialog(
|
||||
ArrayAdapter(context, android.R.layout.simple_spinner_dropdown_item, devices)
|
||||
binding.dropdownDevice.setAdapter(deviceAdapter)
|
||||
|
||||
controlAdapter =
|
||||
AdvancedMappingControlAdapter { control: String -> onControlClicked(control) }
|
||||
controlAdapter = AdvancedMappingControlAdapter(lifecycle) {
|
||||
control: String -> onControlClicked(control)
|
||||
}
|
||||
binding.listControl.adapter = controlAdapter
|
||||
binding.listControl.layoutManager = LinearLayoutManager(context)
|
||||
|
||||
|
Reference in New Issue
Block a user