Поскольку мне недавно пришлось настроить такую же функциональность, я решил поделиться своим подходом.Использование метода setItemsSelected(Iterable<K> keys, boolean selected)
на самом деле не так сложно, как кажется.
Да, вам нужно будет пройти итерацию.Я перебрал свои данные и сохранил индекс каждого элемента как «длинный» внутри arrayList ().
EX:
yourData.forEachWithIndex { i, item ->
//Be sure to start at one, just plus one
someOtherTempArray.add(i.toLong() + 1)
}
Затем я создал метод, который облегчает «запуск» выбора всех функций:
EX:
private fun startHandler(isChecked: Boolean){
val handler = android.os.Handler(Looper.getMainLooper())
val runnable = Runnable {
kotlin.run {
mTracker!!.setItemsSelected(someOtherTempArray.asIterable(),
isChecked)
}
}
handler.post(runnable)
}
Параметр isChecked, который по существу определит, хотим ли мы выбрать все или отменить выбор всех.
Обратите внимание, что я просто использую свой arrayList из 'keys' (для меня это всего лишь индекс элемента. Однако, это может отличаться в зависимости от того, как настроен ваш ItemDetails Builder) и вызываю KotlinФункция .asIterable (), чтобы превратить его в итеративный.
Я также поместил вызов setItemsSelected () внутри обработчика, чтобы заставить выбор происходить в потоке пользовательского интерфейса.
Теперь, когда вы хотите выбрать / отменить выбор всего, вы можете вызвать startHandler (true)!