Я должен изменить SelectionPredicates.createSelectSingleAnything()
и SelectionPredicates.createSelectSingleAnything()
одним нажатием кнопки.
Отображение этой ошибки при изменении SelectionPredicates
на Runtime
В onCreate()
сначала создайте объект SelectionBuilder
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
...
selectionBuilder = SelectionTracker.Builder<Long>(
"mySelection",
recyclerView,
StableIdKeyProvider(recyclerView),
MyItemDetailsLookup(recyclerView),
StorageStrategy.createLongStorage()
)
tracker = customerBuild.build()
adapter.tracker = tracker
...
}
В selectoinBuilder
я не добавляю здесь ни слова о SelectionPredicate
, потому что это будетнастроить, когда пользователь выбирает одну из кнопок.
single.setOnClickListener {
tracker?.clearSelection()
tracker = selectionBuilder.withSelectionPredicate(
SelectionPredicates.createSelectSingleAnything()
).build()
adapter.tracker = tracker
}
multi.setOnClickListener {
tracker?.clearSelection()
tracker =selectionBuilder.withSelectionPredicate(
SelectionPredicates.createSelectAnything()
).build()
adapter.tracker = tracker
}
tracker?.addObserver(object : SelectionTracker.SelectionObserver<Long>() {
override fun onItemStateChanged(key: Long, selected: Boolean) {
super.onItemStateChanged(key, selected)
Log.i("Hello", "changes is index $key, and value is $selected")
}
})
Вы можете увидеть на GitHub . Спасибо!