【发布时间】:2021-10-03 22:56:58
【问题描述】:
我知道我可以轻松地将数据从RecyclerView 传递到fragment,但我想换一种方式。我想从片段中触发interface,并在ViewHolder 中为RecyclerView 实现interface。这是我的interface 和ViewHolder。
interface ExampleListener{
fun onListen()
}
ViewHolder:
inner class ViewHolder(val binding: ItemBinding) : RecyclerView.ViewHolder(binding.root), ExampleListener {
...
override fun onListen() {
// Do something
}
...
}
我不知道如何从fragment 触发这个interface。我知道如果我试图将数据传递给activity,我会像这样触发interface:
override fun onAttach(context: Context) {
super.onAttach(context)
if (context is ExampleListener) {
exampleListener = context
} else {
throw RuntimeException(requireContext().toString() + "must implement ExampleListener")
}
}
【问题讨论】:
-
具体用例是什么,你想完成什么?
-
@mightyWOZ 每个 RecyclerView 项目都有一个下载按钮,用于下载某些内容(图片),当下载开始时,我想显示 ProgressBar 并隐藏按钮可见性。我无法在 ViewHolder 中用刀柄实例化 viewModel,所以我认为这是更好的方法。
标签: android kotlin android-recyclerview interface