(recyclerview-selection) Изменение SelectionTracker во время выполнения - PullRequest
0 голосов
/ 09 апреля 2019

Я должен изменить SelectionPredicates.createSelectSingleAnything() и SelectionPredicates.createSelectSingleAnything() одним нажатием кнопки.

enter image description here

Отображение этой ошибки при изменении 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 . Спасибо!

...