From d3da4478b4a1bfb1905acb757c1f7dbc39dc3b5e Mon Sep 17 00:00:00 2001 From: Helium314 Date: Mon, 19 Feb 2024 14:33:51 +0100 Subject: [PATCH] disable onCheckedChangeListener while setting switch state, fixes #505 --- .../helium314/keyboard/latin/utils/PopupKeysUtils.kt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/helium314/keyboard/latin/utils/PopupKeysUtils.kt b/app/src/main/java/helium314/keyboard/latin/utils/PopupKeysUtils.kt index f2e4298cc..b524c0b32 100644 --- a/app/src/main/java/helium314/keyboard/latin/utils/PopupKeysUtils.kt +++ b/app/src/main/java/helium314/keyboard/latin/utils/PopupKeysUtils.kt @@ -126,17 +126,18 @@ fun reorderPopupKeysDialog(context: Context, key: String, defaultSetting: String } val bgColor = ContextCompat.getColor(context, R.color.sliding_items_background) val adapter = object : ListAdapter, RecyclerView.ViewHolder>(callback) { - override fun onCreateViewHolder(p0: ViewGroup, p1: Int): RecyclerView.ViewHolder { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { val b = LayoutInflater.from(context).inflate(R.layout.popup_keys_list_item, rv, false) b.setBackgroundColor(bgColor) return object : RecyclerView.ViewHolder(b) { } } - override fun onBindViewHolder(p0: RecyclerView.ViewHolder, p1: Int) { - val (text, wasChecked) = orderedItems[p1] + override fun onBindViewHolder(viewHolder: RecyclerView.ViewHolder, position: Int) { + val (text, wasChecked) = orderedItems[position] val displayTextId = context.resources.getIdentifier(text.lowercase(), "string", context.packageName) val displayText = if (displayTextId == 0) text else context.getString(displayTextId) - p0.itemView.findViewById(R.id.popup_keys_type)?.text = displayText - val switch = p0.itemView.findViewById(R.id.popup_keys_switch) + viewHolder.itemView.findViewById(R.id.popup_keys_type)?.text = displayText + val switch = viewHolder.itemView.findViewById(R.id.popup_keys_switch) + switch?.setOnCheckedChangeListener(null) switch?.isChecked = wasChecked switch?.isEnabled = !(key.contains(Settings.PREF_POPUP_KEYS_ORDER) && text == POPUP_KEYS_LAYOUT) // layout can't be disabled switch?.setOnCheckedChangeListener { _, isChecked ->