android - FireBaseRecyclerAdapter单击项目时如何打开Fragment并显示数据?
问题描述
当从 FireBaseRecyclerAdapter 中单击一个项目时,我想打开一个新片段。
PersonAdapter.kt:
override fun onBindViewHolder(
holder: personsViewholder,
position: Int, model: Exercise
) {
holder.title.text = model.title
holder.description.text = model.description
}
目前我可以用数据填充recyclerview,但是如何将这些数据传递给一个新的片段,例如PersonDetailFragment?
我试过的
var activity: AppCompatActivity = it.context as AppCompatActivity
activity.supportFragmentManager.beginTransaction()
.replace(R.id.chat_profile_dimmer, ExercisesFragment(model.title, model.description)).addToBackStack(null).commit()
我已经尝试了几件事,但似乎没有任何效果。
解决方案
您可以通过使用回调来做到这一点。请按照以下步骤操作:
在适配器构造函数中进行回调。
class YourAdapter(private val callback: (DataTypeToBeSent) -> Unit): ...
在
onBindViewHolder
:holder.view.setOnClickListener {
callback.invoke(model)
}
这样,每次在 RecyclerView 中单击按钮/视图时,您将在调用适配器的视图(活动/片段)中获取数据。
然后从该视图(活动/片段),您可以启动片段。
推荐阅读
- javascript - JavaScript:对对象的迭代(无法返回答案)
- java - 运行可执行的 .jar 文件并在 Windows 登录之前确认运行以隐藏对 Windows 桌面的访问
- arrays - 创建嵌套数组时的 For 循环问题
- python - 数据集形状不匹配 Conv1D 输入层
- perl - 有没有比在 Perl 中打包/解包更快的方法来获取浮点位?
- terraform - 如何在“aws_sns_topic_subscription”的“端点”的插值字符串中使用变量?
- stm32 - 通过定时器和 GPIO/AF 引脚变化生成两个相反的 PWM 信号
- c# - C#.Net 将 SharePoint Online 文件夹的内容下载到网络驱动器
- sql - 如何在一个值之前的值上计算聚合函数 COUNT(DISTINCT)?
- json - 如何使用 Python 将大型 json 文件提取到 csv