【问题标题】:(recyclerview-selection)Changing SelectionTracker during run time(recyclerview-selection)在运行时改变 SelectionTracker
【发布时间】: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


【解决方案1】:

在selectionBuilder的StableIdKeyProvider中,把recyclerView的参数改成adapter,因为keyProviders是选择键的来源,也就是ad​​apter。

【讨论】:

    【解决方案2】:

    在初始化选择跟踪器构建器之前,您应该首先设置 recyclvew.adapter 的值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-06
      • 2021-10-28
      相关资源
      最近更新 更多