首页 > 解决方案 > 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()

我已经尝试了几件事,但似乎没有任何效果。

标签: androidkotlinfirebase-realtime-databaseandroid-recyclerviewfirebaseui

解决方案


您可以通过使用回调来做到这一点。请按照以下步骤操作:

  1. 在适配器构造函数中进行回调。

    class YourAdapter(private val callback: (DataTypeToBeSent) -> Unit): ...

  2. onBindViewHolder

    holder.view.setOnClickListener {
    callback.invoke(model)
    }

这样,每次在 RecyclerView 中单击按钮/视图时,您将在调用适配器的视图(活动/片段)中获取数据。

然后从该视图(活动/片段),您可以启动片段。


推荐阅读