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()的主要内容,如果未能解决你的问题,请参考以下文章
如何在 MVVM 架构中观察 RecyclerView 适配器中的 LiveData?
从 Fragment 中的适配器(recyclerview)获取所有项目