FireBaseRecyclerAdapter单击项目并显示数据时如何打开Fragment?
Posted
技术标签:
【中文标题】FireBaseRecyclerAdapter单击项目并显示数据时如何打开Fragment?【英文标题】:FireBaseRecyclerAdapter how to open Fragment when clicking on an item and show data? 【发布时间】:2021-04-24 08:14:54 【问题描述】:我想在从 FireBaseRecyclerAdapter 中单击一个项目时打开一个新的 Fragment。
PersonAdapter.kt:
override fun onBindViewHolder(
holder: personsViewholder,
position: Int, model: Exercise
)
holder.title.text = model.title
holder.description.text = model.description
目前我可以用数据填充 recyclerview,但是如何将这些数据传递给新的 Fragment,例如 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()
我已经尝试了几件事,但似乎没有任何效果。
【问题讨论】:
您是否尝试过从 xml 文件传递父视图并在其上设置点击侦听器? EX:holder.parentView.setClickListner...... 【参考方案1】:您可以通过使用回调来做到这一点。请按照以下步骤操作:
在适配器构造函数中进行回调。
class YourAdapter(private val callback: (DataTypeToBeSent) -> Unit): ...
在onBindViewHolder
:
holder.view.setOnClickListener
callback.invoke(model)
这样,每次在 RecyclerView 中单击按钮/视图时,您都会在调用适配器的视图(Activity/Fragment)中获取数据。
然后从那个视图(Activity/Fragment),你就可以启动片段了。
【讨论】:
以上是关于FireBaseRecyclerAdapter单击项目并显示数据时如何打开Fragment?的主要内容,如果未能解决你的问题,请参考以下文章
如何更新 FirebaseRecyclerAdapter 查询
我在 FirebaseRecyclerAdapter 类中找不到 populateViewHolder 方法
在 FirebaseRecyclerAdapter 上应用过滤器
populateViewHolder 未使用 FirebaseRecyclerAdapter (Android) 执行