RecyclerView 适配器中的 onBackPressed()

Posted

技术标签:

【中文标题】RecyclerView 适配器中的 onBackPressed()【英文标题】:onBackPressed() in RecyclerView Adapter 【发布时间】:2021-05-10 19:39:09 【问题描述】:

我正在为 RecyclerView 创建一个适配器;当前为 RecyclerView 中的项目创建 onClickListener;我希望回到我似乎做不到的片段,所以我尝试在方法中添加带有 super.onBackPressed 的 onBackPressed(),因为片段位于上一页;我在 onClickListener 中调用了它,但它似乎不起作用,有什么想法可以解决这个问题吗?

代码如下:

公共类 MyViewHolder 扩展 RecyclerView.ViewHolder TextView text1, text2, text3;

public MyViewHolder(@NonNull View itemView) 
  super(itemView);
  itemView.setOnClickListener(new View.OnClickListener() 
    @Override public void onClick(View v) 
    // This onClick doesn't accept onBackPressed() or popBackStack(), however I need to get this to the previous page which is a fragment.
    
  );

【问题讨论】:

【参考方案1】:

您需要将 OnClickListener(或自定义回调接口)传递给 Adapter,并将其传递给每个 ViewHolder。一旦调用了 viewholder onClick,您就调用传递的侦听器,然后它会冒泡到您创建适配器的 Fragment/Activity。

可以在此答案中找到一个很好的示例:https://***.com/a/28304164/180538

当然你可以在这个传递的 onClickListener 中调用 onBackPressed() 或者你想在那里执行的任何代码

【讨论】:

终于搞定了,非常感谢您的帮助!!

以上是关于RecyclerView 适配器中的 onBackPressed()的主要内容,如果未能解决你的问题,请参考以下文章

RecyclerView 适配器中的导航组件

RecyclerView 适配器中的空侦听器

如何在 MVVM 架构中观察 RecyclerView 适配器中的 LiveData?

从 Fragment 中的适配器(recyclerview)获取所有项目

将 ListView 中的位置传递给子 RecyclerView 适配器

Recyclerview 适配器错误:Android Studio 中的 Arraylist 大小为零