我正在尝试为RecyclerView中的项目自定义对讲输出。我修改了onBindViewHolder
方法以包含以下代码
itemView?.setAccessibilityDelegate(object: View.AccessibilityDelegate() {
override fun onPopulateAccessibilityEvent(host: View?, event: AccessibilityEvent?) {
super.onPopulateAccessibilityEvent(host, event)
event?.let {event ->
if (event.eventType == AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED) {
event.text.add("Hello world!")
}
}
}
})
不幸的是,只对RecyclerView
中的最后一个可见项修改了对讲输出。
我不明白为什么委托适用于某些ViewHolders
而非其他人。
答案 0 :(得分:1)
RecyclerView
向其子项添加AccessibilityDelegates
以向其添加自己的操作。由于一个视图最多可以包含一个代理,无论先添加哪一个(你的或RecyclerView
的代理)都会被破坏。
RecyclerView
的{{3}} AccessibilityDelegate
适用于其子女。这就是你想要的。