gpt4 book ai didi

android - 设计问题 - RecyclerView 和 Fragments 之间的通信

转载 作者:搜寻专家 更新时间:2023-11-01 08:28:39 26 4
gpt4 key购买 nike

我有一个 Activity 和两个 fragment , fragment A 和 fragment B。 fragment A 包含一个 RecyclerView。在它的适配器 (MovieRecyclerAdapter) 中,我有一个接口(interface)将点击的列的 ID 中继回 fragment A。

这是适配器中的接口(interface):

private MovieClickedListener movieClickedListener;

public interface MovieClickedListener{
void onCLicked(int Id);
}

public MovieRecyclerAdapter(MovieClickedListener listener){
this.movieClickedListener = listener;
}

我在我的 Fragment 类中实现了它以检索数据。

implements MovieRecyclerAdapter.MovieClickedListener

我现在有了数据。这是我的问题,我需要将它传递给 Fragment B。我知道我可以实现另一个在 Fragment A 和我的 Activity 之间通信的接口(interface),将它传递到那里,然后在我的 Activity 中检索它并将 id 传递给 Fragment B。

我想知道这是否是正确的策略,或者是否有更有效的方法将点击的 ID 从 FragmentA 中的 RecyclerView 获取到 Fragment B?

我尝试直接在我的 Activity 而不是 FragmentA 中实现来自 RecyclerView 的界面,但是当我现在点击一个项目时没有任何反应。

这里是 Activity 中的 clickedListener,带有一个简单的 Log 语句。

public class MainActivity extends AppCompatActivity implements MovieRecyclerAdapter.MovieClickedListener {   @Override
public void onCLicked(int Id) {
Log.v("TAG","In MainActivity")
}}

问题是,如果我这样做,在 Activity 中实现 clickedListener 而不是 Fragment,当我在 Fragment 中实例化 RecyclerView 时,我无法再将“this”作为构造函数参数传递给适配器。

movieRecyclerAdapter = new MovieRecyclerAdapter(this);

我已经尝试了所有类型的上下文,但它不会工作

最佳答案

您问题的最后一部分:

如果你想在你的 Activity 中实现这个接口(interface),你可以在你的 fragment 中添加这段代码:

@Override
public void onAttach(Context context) {
super.onAttach(context);

if (context instanceof MovieRecyclerAdapter.MovieClickedListener){
// save the interface in a field
callback = (MovieRecyclerAdapter.MovieClickedListener) context;
}
}

然后你可以像这样初始化你的适配器:

movieRecyclerAdapter = new MovieRecyclerAdapter(callback);

现在我推荐:

如果我没听错,您想单击回收站 View 的一个项目并打开/切换到另一个 fragment 。在我的应用程序中,我遇到了类似的问题并这样解决了:

我有一个 recyclerview,其中的项目代表一个电影对象。我总是使用电影 ID。真实的电影对象由单例管理器类管理。因此,如果我单击一个项目,我将创建一个新的 Intent 并将 bundle 中的电影 ID 传递给新 Activity 。如果我想访问电影对象,我必须调用类似 manager.getInstance().getMovie(movieid); 的方法。所以我使用传递的 movieid 来访问真实对象。

关于android - 设计问题 - RecyclerView 和 Fragments 之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42509763/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com