android-fragments 在回收器视图中的片段之间的导航

fcipmucu  于 2022-11-13  发布在  Android
关注(0)|答案(1)|浏览(177)

我正在制作一个简单的应用程序,其中包含一个回收程序,其中包含一个项目列表,当点击一个项目时,它需要导航到该项目的一个新的单独页面。(注意,包含项目列表的回收程序视图和项目页面都是片段,导航需要在不启动新Activity的情况下进行)
我已经在MainActivity中设置了NavHostFragment和onClickListener,以便在带有回收器视图的片段的Adapter类的onBindViewHolder方法中获取单击的项目。我不知道如何在Adapter类的onClickListener方法中调用MainACtivity中的navController来导航到项目片段,或者有没有其他方法可以做到这一点?我是新手android studio dev!请帮助,谢谢!

34gzjxbg

34gzjxbg1#

您可以简单地实现一个接口来在fragment和adapter之间进行通信。
假设有片段A、片段B和一个适配器。
FragmentA和适配器是相关的,并且您希望从FragmentA移动到FragmentB。因此,您使用接口侦听器将FragmentA与适配器连接。在适配器中处理click事件,并将数据从适配器传递到FragmentA,然后使用导航控制器从FragmentA中的override方法调用FragmentB。
下面是一个简单的例子:
监听程序:

public interface eventListener { void onEvent(int key, Object object); }

片段A:

class FragmentA : Fragment(), eventListener {

     override fun onEvent(key: Int, any: Any?) { // call FragmentB }

}

适配器:

class Adapter(listener: WoovlyEventListener) :
RecyclerView.Adapter<RecyclerView.ViewHolder>() {

    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {

    holder.btn.setOnClickListener{ listener.onEvent(0, null) }

    }
}

片段B:

class FragmentB : Fragment(){}

相关问题