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) 执行

如何从 FirebaseRecyclerAdapter 中排除项目

我应该使用不同的数据结构还是过滤 FirebaseRecyclerAdapter? [复制]