gpt4 book ai didi

android - 回收站 View 选择 : stop auto item deselection when touching to the blank space inside the recyclerview

转载 作者:行者123 更新时间:2023-12-05 00:05:08 24 4
gpt4 key购买 nike

我正在尝试使用 recyclerview-selection我项目中的库。我遵循了本教程:

https://proandroiddev.com/a-guide-to-recyclerview-selection-3ed9f2381504

一切正常。但我有一个问题。如果我点击/触摸 RecyclerView 中的任何空白区域,所有选定的元素都会被取消选择!我找不到任何方法或解决方案来禁用它。我该怎么办?

我在我的项目中使用 implementation 'androidx.recyclerview:recyclerview-selection:1.1.0-rc01'

编辑 1:

example image

我将 RecyclerView 背景设置为红色来描述我的问题。此处,蓝色项目是选定的项目。如果我点击任何红色区域,那么所有选中的项目都会被取消选中!选择和取消选择只能通过单击项目来完成。所以,我需要禁用此功能(或错误!),取消选择所有项目!

示例项目:https://github.com/ImaginativeShohag/multiselection

最佳答案

解决方案是有一个脱离上下文的选择项,例如:

class ItemLookup(private val recyclerView: RecyclerView) : ItemDetailsLookup<Long>() {
private val outOfContextSelection = object : ItemDetails<Long>() {
override fun getPosition(): Int = OUT_OF_CONTEXT_POSITION.toInt()
override fun getSelectionKey() = OUT_OF_CONTEXT_POSITION
}

override fun getItemDetails(e: MotionEvent): ItemDetails<Long>? {
recyclerView.findChildViewUnder(e.x, e.y)?.let {
return (recyclerView.getChildViewHolder(it) as?
SelectorBarAdapter.SelectorBarViewHolder)?.itemDetails
}
return outOfContextSelection
}

companion object {
const val OUT_OF_CONTEXT_POSITION = 10000L
}
}

这样当点击一个不是我们可点击元素之一的 View 时,我们可以在谓词上进一步识别,如下所示:

class SingleSelectionPredicate : SelectionTracker.SelectionPredicate<Long>() {
override fun canSetStateForKey(key: Long, nextState: Boolean): Boolean {
// warranties that an item can't be unselected on click
// warranties that clicks out of the item's scope are disabled
return nextState && key != ItemLookup.OUT_OF_CONTEXT_POSITION
}

override fun canSetStateAtPosition(position: Int, nextState: Boolean) = true
override fun canSelectMultiple() = false

关于android - 回收站 View 选择 : stop auto item deselection when touching to the blank space inside the recyclerview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60916899/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com