【发布时间】:2019-04-09 11:26:02
【问题描述】:
我必须通过单击按钮更改SelectionPredicates.createSelectSingleAnything() 和SelectionPredicates.createSelectSingleAnything()。
当我在Runtime 上更改SelectionPredicates 时显示此错误
在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")
}
})
谢谢!
【问题讨论】:
-
有点晚了,但是对于再次遇到此错误的任何人,请在将跟踪器设置为适配器之前尝试将适配器设置为 recyclerview。这对我有用
标签: android android-recyclerview android-support-library androidx