From a75deb1374ae972d0dcff56fa571bbba9ccbeb28 Mon Sep 17 00:00:00 2001 From: zarazaex69 Date: Sun, 24 May 2026 16:31:09 +0300 Subject: [PATCH] feat(ui): replace built-in multi-choice dialog with custom adapter --- .../java/xyz/zarazaex/olc/ui/MainActivity.kt | 21 ++++++++++++--- .../main/res/layout/item_dialog_country.xml | 26 +++++++++++++++++++ 2 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 V2rayNG/app/src/main/res/layout/item_dialog_country.xml diff --git a/V2rayNG/app/src/main/java/xyz/zarazaex/olc/ui/MainActivity.kt b/V2rayNG/app/src/main/java/xyz/zarazaex/olc/ui/MainActivity.kt index ae053e91..87335c17 100644 --- a/V2rayNG/app/src/main/java/xyz/zarazaex/olc/ui/MainActivity.kt +++ b/V2rayNG/app/src/main/java/xyz/zarazaex/olc/ui/MainActivity.kt @@ -1093,11 +1093,26 @@ class MainActivity : HelperBaseActivity(), NavigationView.OnNavigationItemSelect // currentFilter stores excluded set (empty = show all) val checked = BooleanArray(codes.size) { codes[it] in currentFilter } + val adapter = object : android.widget.BaseAdapter() { + override fun getCount() = labels.size + override fun getItem(pos: Int) = labels[pos] + override fun getItemId(pos: Int) = pos.toLong() + override fun getView(pos: Int, convertView: android.view.View?, parent: android.view.ViewGroup): android.view.View { + val view = convertView ?: layoutInflater.inflate(R.layout.item_dialog_country, parent, false) + view.findViewById(R.id.text).text = labels[pos] + val cb = view.findViewById(R.id.check_box) + cb.isChecked = checked[pos] + view.setOnClickListener { + checked[pos] = !checked[pos] + cb.isChecked = checked[pos] + } + return view + } + } + val dialog = MaterialAlertDialogBuilder(this@MainActivity) .setTitle("Исключить страны") - .setMultiChoiceItems(labels, checked) { _, which, isChecked -> - checked[which] = isChecked - } + .setAdapter(adapter, null) .setPositiveButton("Применить") { _, _ -> val excluded = codes.filterIndexed { i, _ -> checked[i] }.toSet() mainViewModel.applyCountryFilter(excluded) diff --git a/V2rayNG/app/src/main/res/layout/item_dialog_country.xml b/V2rayNG/app/src/main/res/layout/item_dialog_country.xml new file mode 100644 index 00000000..81dc97d2 --- /dev/null +++ b/V2rayNG/app/src/main/res/layout/item_dialog_country.xml @@ -0,0 +1,26 @@ + + + + + + + +