@@ -84,22 +84,31 @@ class ParamsAppChooserRender(
8484 list : MutableList <AdapterAppChooser .AppInfo >,
8585 item : AdapterAppChooser .AppInfo
8686 ) {
87+ val isSelected =
88+ item.packageName != null &&
89+ selectedValues.contains(item.packageName)
90+
91+ // gán luôn trạng thái selected tại đây
92+ item.selected = isSelected
93+
8794 var low = 0
8895 var high = list.size
89-
9096 val name = item.appName ? : " "
91- val selected = item.selected
9297
9398 while (low < high) {
9499 val mid = (low + high) ushr 1
95100 val m = list[mid]
96101
102+ val mSelected =
103+ m.packageName != null &&
104+ selectedValues.contains(m.packageName)
105+
97106 when {
98107 // 1️⃣ Ưu tiên app đã chọn
99- m.selected != selected ->
100- if (selected ) high = mid else low = mid + 1
108+ mSelected != isSelected ->
109+ if (isSelected ) high = mid else low = mid + 1
101110
102- // 2️⃣ Cùng trạng thái → sort A–Z (đa ngôn ngữ)
111+ // 2️⃣ Cùng trạng thái → sort A–Z
103112 collator.compare(m.appName ? : " " , name) < 0 ->
104113 low = mid + 1
105114
@@ -261,43 +270,6 @@ class ParamsAppChooserRender(
261270 }
262271 }
263272
264- private fun preloadSelectedApps (): ArrayList <AdapterAppChooser .AppInfo > {
265- val pm = context.packageManager
266- val result = ArrayList <AdapterAppChooser .AppInfo >()
267-
268- val values = if (actionParamInfo.multiple) {
269- valueView.text.toString()
270- .split(actionParamInfo.separator)
271- .filter { it.isNotEmpty() }
272- } else {
273- listOf (valueView.text.toString()).filter { it.isNotEmpty() }
274- }
275-
276- // ✅ nếu chưa chọn gì → trả list rỗng
277- if (values.isEmpty()) return result
278-
279- for (pkg in values) {
280- try {
281- val app = pm.getApplicationInfo(pkg, 0 )
282- result.add(
283- AdapterAppChooser .AppInfo ().apply {
284- packageName = pkg
285- appName = app.loadLabel(pm)?.toString() ? : pkg
286- selected = true
287- }
288- )
289- } catch (_: Exception ) {
290- result.add(
291- AdapterAppChooser .AppInfo ().apply {
292- packageName = pkg
293- appName = pkg
294- selected = true
295- }
296- )
297- }
298- }
299- return result
300- }
301273 // =======================
302274 // CALLBACK
303275 // =======================
0 commit comments