mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-26 07:39:45 -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.LayoutInflater
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.lifecycle.Lifecycle
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import org.dolphinemu.dolphinemu.databinding.ListItemAdvancedMappingControlBinding
|
import org.dolphinemu.dolphinemu.databinding.ListItemAdvancedMappingControlBinding
|
||||||
import java.util.function.Consumer
|
import java.util.function.Consumer
|
||||||
|
|
||||||
class AdvancedMappingControlAdapter(private val onClickCallback: Consumer<String>) :
|
class AdvancedMappingControlAdapter(
|
||||||
RecyclerView.Adapter<AdvancedMappingControlViewHolder>() {
|
private val parentLifecycle: Lifecycle,
|
||||||
|
private val onClickCallback: Consumer<String>
|
||||||
|
) : RecyclerView.Adapter<AdvancedMappingControlViewHolder>() {
|
||||||
|
|
||||||
private var controls = emptyArray<String>()
|
private var controls = emptyArray<String>()
|
||||||
|
|
||||||
override fun onCreateViewHolder(
|
override fun onCreateViewHolder(
|
||||||
@ -18,7 +22,7 @@ class AdvancedMappingControlAdapter(private val onClickCallback: Consumer<String
|
|||||||
): AdvancedMappingControlViewHolder {
|
): AdvancedMappingControlViewHolder {
|
||||||
val inflater = LayoutInflater.from(parent.context)
|
val inflater = LayoutInflater.from(parent.context)
|
||||||
val binding = ListItemAdvancedMappingControlBinding.inflate(inflater)
|
val binding = ListItemAdvancedMappingControlBinding.inflate(inflater)
|
||||||
return AdvancedMappingControlViewHolder(binding, onClickCallback)
|
return AdvancedMappingControlViewHolder(binding, parentLifecycle, onClickCallback)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onBindViewHolder(holder: AdvancedMappingControlViewHolder, position: Int) =
|
override fun onBindViewHolder(holder: AdvancedMappingControlViewHolder, position: Int) =
|
||||||
@ -30,4 +34,19 @@ class AdvancedMappingControlAdapter(private val onClickCallback: Consumer<String
|
|||||||
this.controls = controls
|
this.controls = controls
|
||||||
notifyDataSetChanged()
|
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
|
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.databinding.ListItemAdvancedMappingControlBinding
|
||||||
|
import org.dolphinemu.dolphinemu.utils.LifecycleViewHolder
|
||||||
import java.util.function.Consumer
|
import java.util.function.Consumer
|
||||||
|
|
||||||
class AdvancedMappingControlViewHolder(
|
class AdvancedMappingControlViewHolder(
|
||||||
private val binding: ListItemAdvancedMappingControlBinding,
|
private val binding: ListItemAdvancedMappingControlBinding,
|
||||||
|
parentLifecycle: Lifecycle,
|
||||||
onClickCallback: Consumer<String>
|
onClickCallback: Consumer<String>
|
||||||
) : RecyclerView.ViewHolder(binding.root) {
|
) : LifecycleViewHolder(binding.root, parentLifecycle) {
|
||||||
|
|
||||||
private lateinit var name: String
|
private lateinit var name: String
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
@ -38,8 +38,9 @@ class AdvancedMappingDialog(
|
|||||||
ArrayAdapter(context, android.R.layout.simple_spinner_dropdown_item, devices)
|
ArrayAdapter(context, android.R.layout.simple_spinner_dropdown_item, devices)
|
||||||
binding.dropdownDevice.setAdapter(deviceAdapter)
|
binding.dropdownDevice.setAdapter(deviceAdapter)
|
||||||
|
|
||||||
controlAdapter =
|
controlAdapter = AdvancedMappingControlAdapter(lifecycle) {
|
||||||
AdvancedMappingControlAdapter { control: String -> onControlClicked(control) }
|
control: String -> onControlClicked(control)
|
||||||
|
}
|
||||||
binding.listControl.adapter = controlAdapter
|
binding.listControl.adapter = controlAdapter
|
||||||
binding.listControl.layoutManager = LinearLayoutManager(context)
|
binding.listControl.layoutManager = LinearLayoutManager(context)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user