【发布时间】:2021-09-07 22:36:17
【问题描述】:
上下文
我有一个RecyclerView 卡片列表,可以通过单击它们来选择它们。我使用SelectionTracker 和ItemDetailsLookup 来跟踪选择了哪些卡片。一切都很好。
现在我在卡片的右上角添加了一个溢出上下文菜单按钮。但是当我点击菜单按钮时,卡片会被取消/选中。我想要的是按钮的onClickListener 触发菜单弹出。
请帮忙,我错过了什么?
片段
class ProductsFragment : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
val tracker = SelectionTracker.Builder( ... ).build()
adapter.tracker = tracker
tracker.addObserver(
object : SelectionTracker.SelectionObserver<String>() {
override fun onSelectionChanged() { ... }
}
)
}
}
RecyclerView.Adapter
class ProductsAdapter : RecyclerView.Adapter<ProductsAdapter.ViewHolder>() {
var tracker: SelectionTracker<String>? = null
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val product= products[position]
holder.menuButton.setOnClickListener {
showMenu(holder)
}
}
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val menuButton: MaterialButton = view.findViewById(R.id.menu)
fun getItemDetails(): ItemDetails<String> = object : ItemDetails<String>() {
override fun getPosition(): Int = absolutePosition
override fun getSelectionKey(): String = getItem(absolutePosition).product.id.toString()
}
}
【问题讨论】:
标签: android kotlin android-recyclerview onclicklistener android-viewholder