From 0dd601577d20140b78fe2fddf0382d91ec97eeff Mon Sep 17 00:00:00 2001 From: JosJuice Date: Sat, 17 May 2025 09:33:57 +0200 Subject: [PATCH] Android: Set parent when inflating RecyclerView.ViewHolders This makes sure view holders get proper widths when they use layout_width="match_parent". This becomes quite noticeable for AdvancedMappingControlAdapter in the next commit, but I'm also making the change for other adapters while I'm at it. --- .../dolphinemu/adapters/GameAdapter.kt | 3 +- .../features/cheats/ui/CheatsAdapter.kt | 6 +-- .../input/ui/AdvancedMappingControlAdapter.kt | 2 +- .../riivolution/ui/RiivolutionAdapter.kt | 2 +- .../features/settings/ui/SettingsAdapter.kt | 41 ++++++++----------- 5 files changed, 23 insertions(+), 31 deletions(-) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.kt index c1ef9c2b8f..dbcfdd42e2 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.kt @@ -37,7 +37,8 @@ class GameAdapter : RecyclerView.Adapter(), * @return The created ViewHolder with references to all the child view's members. */ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): GameViewHolder { - val binding = CardGameBinding.inflate(LayoutInflater.from(parent.context)) + val inflater = LayoutInflater.from(parent.context) + val binding = CardGameBinding.inflate(inflater, parent, false) binding.root.apply { setOnClickListener(this@GameAdapter) setOnLongClickListener(this@GameAdapter) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/cheats/ui/CheatsAdapter.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/cheats/ui/CheatsAdapter.kt index c75330375d..732555ea32 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/cheats/ui/CheatsAdapter.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/cheats/ui/CheatsAdapter.kt @@ -43,17 +43,17 @@ class CheatsAdapter( val inflater = LayoutInflater.from(parent.context) return when (viewType) { CheatItem.TYPE_CHEAT -> { - val listItemCheatBinding = ListItemCheatBinding.inflate(inflater) + val listItemCheatBinding = ListItemCheatBinding.inflate(inflater, parent, false) addViewListeners(listItemCheatBinding.getRoot()) CheatViewHolder(listItemCheatBinding) } CheatItem.TYPE_HEADER -> { - val listItemHeaderBinding = ListItemHeaderBinding.inflate(inflater) + val listItemHeaderBinding = ListItemHeaderBinding.inflate(inflater, parent, false) addViewListeners(listItemHeaderBinding.root) HeaderViewHolder(listItemHeaderBinding) } CheatItem.TYPE_ACTION -> { - val listItemSubmenuBinding = ListItemSubmenuBinding.inflate(inflater) + val listItemSubmenuBinding = ListItemSubmenuBinding.inflate(inflater, parent, false) addViewListeners(listItemSubmenuBinding.root) ActionViewHolder(listItemSubmenuBinding) } 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 8919f22658..cb20809266 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 @@ -23,7 +23,7 @@ class AdvancedMappingControlAdapter( viewType: Int ): AdvancedMappingControlViewHolder { val inflater = LayoutInflater.from(parent.context) - val binding = ListItemAdvancedMappingControlBinding.inflate(inflater) + val binding = ListItemAdvancedMappingControlBinding.inflate(inflater, parent, false) return AdvancedMappingControlViewHolder(binding, parentLifecycle, isInput, onClickCallback) } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/riivolution/ui/RiivolutionAdapter.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/riivolution/ui/RiivolutionAdapter.kt index 9cae2f0bae..d64e10a111 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/riivolution/ui/RiivolutionAdapter.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/riivolution/ui/RiivolutionAdapter.kt @@ -32,7 +32,7 @@ class RiivolutionAdapter(private val context: Context, private val patches: Riiv override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RiivolutionViewHolder { val inflater = LayoutInflater.from(parent.context) - val binding = ListItemRiivolutionBinding.inflate(inflater) + val binding = ListItemRiivolutionBinding.inflate(inflater, parent, false) return RiivolutionViewHolder(binding.root, binding) } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.kt index 1c230f4447..3ce937e6ab 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.kt @@ -68,57 +68,48 @@ class SettingsAdapter( val inflater = LayoutInflater.from(parent.context) return when (viewType) { SettingsItem.TYPE_HEADER -> HeaderViewHolder( - ListItemHeaderBinding.inflate(inflater), + ListItemHeaderBinding.inflate(inflater, parent, false), this ) SettingsItem.TYPE_SWITCH -> SwitchSettingViewHolder( - ListItemSettingSwitchBinding.inflate(inflater), + ListItemSettingSwitchBinding.inflate(inflater, parent, false), this ) SettingsItem.TYPE_STRING_SINGLE_CHOICE, SettingsItem.TYPE_SINGLE_CHOICE_DYNAMIC_DESCRIPTIONS, SettingsItem.TYPE_SINGLE_CHOICE -> SingleChoiceViewHolder( - ListItemSettingBinding.inflate(inflater), + ListItemSettingBinding.inflate(inflater, parent, false), this ) SettingsItem.TYPE_SLIDER -> SliderViewHolder( - ListItemSettingBinding.inflate( - inflater - ), this, context + ListItemSettingBinding.inflate(inflater, parent, false), + this, + context ) SettingsItem.TYPE_SUBMENU -> SubmenuViewHolder( - ListItemSubmenuBinding.inflate( - inflater - ), this + ListItemSubmenuBinding.inflate(inflater, parent, false), + this ) SettingsItem.TYPE_INPUT_MAPPING_CONTROL -> InputMappingControlSettingViewHolder( - ListItemMappingBinding.inflate(inflater), + ListItemMappingBinding.inflate(inflater, parent, false), this ) SettingsItem.TYPE_FILE_PICKER -> FilePickerViewHolder( - ListItemSettingBinding.inflate( - inflater - ), this + ListItemSettingBinding.inflate(inflater, parent, false), + this ) SettingsItem.TYPE_RUN_RUNNABLE -> RunRunnableViewHolder( - ListItemSettingBinding.inflate( - inflater - ), this, context + ListItemSettingBinding.inflate(inflater, parent, false), + this, context ) SettingsItem.TYPE_STRING -> InputStringSettingViewHolder( - ListItemSettingBinding.inflate( - inflater - ), this + ListItemSettingBinding.inflate(inflater, parent, false), this ) SettingsItem.TYPE_HYPERLINK_HEADER -> HeaderHyperLinkViewHolder( - ListItemHeaderBinding.inflate( - inflater - ), this + ListItemHeaderBinding.inflate(inflater, parent, false), this ) SettingsItem.TYPE_DATETIME_CHOICE -> DateTimeSettingViewHolder( - ListItemSettingBinding.inflate( - inflater - ), this + ListItemSettingBinding.inflate(inflater, parent, false), this ) else -> throw IllegalArgumentException("Invalid view type: $viewType") }