diff options
| author | JosJuice <josjuice@gmail.com> | 2025-05-13 19:32:15 +0200 |
|---|---|---|
| committer | JosJuice <josjuice@gmail.com> | 2025-06-07 10:20:19 +0200 |
| commit | 4b4a775d5a1f03bd441422541bc0fa1beda92319 (patch) | |
| tree | ec313a80aff2c01393cc80c8518eea0e89df66db /Source/Android/app/src/main/java | |
| parent | 5d7cba8cd95333cddb113956bc352cc00f474fe9 (diff) | |
Android: Make AdvancedMappingControlViewHolder a LifecycleOwner
Diffstat (limited to 'Source/Android/app/src/main/java')
3 files changed, 30 insertions, 7 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/AdvancedMappingControlAdapter.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/AdvancedMappingControlAdapter.kt index 1c82616726..963be36d48 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/AdvancedMappingControlAdapter.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/AdvancedMappingControlAdapter.kt @@ -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() + } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/AdvancedMappingControlViewHolder.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/AdvancedMappingControlViewHolder.kt index dbfecfc94d..f0bf4efe61 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/AdvancedMappingControlViewHolder.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/AdvancedMappingControlViewHolder.kt @@ -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 { diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/AdvancedMappingDialog.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/AdvancedMappingDialog.kt index 7d1c83a217..e05de10105 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/AdvancedMappingDialog.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/AdvancedMappingDialog.kt @@ -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) |
