在碎片中的Recyclerviews之间进行通信(ViewPager)

时间:2015-04-15 21:52:35

标签: android android-fragments android-recyclerview

我有3个片段,我可以使用水平滑动(ViewPager)访问。在每个片段中都有一个Recyclerview(来源,翻译和描述)。现在我已经实现了代码,可以在recyclerview中选择项目。我现在喜欢的是,当我点击第一个recylcerview中的项目时,第二个和第三个recylcerview中的项目也会被选中。 我是否需要检查启动片段的活动,或者建议的方法是什么。我不需要代码,只是最好的方法来做到这一点......

非常感谢

3 个答案:

答案 0 :(得分:1)

您有多种方法可以实现这一目标,但总的来说,您正在寻找发布/订阅者/观察者解决方案。

实现这一目标的一种方法是利用托管活动communicate among fragments。在这种方法中,您定义一个接口并让您的Fragments各自实现该接口,然后当其中一个RecyclerViews'选择项目后,您将通知其他片段。另一种解决方案是使用像GreenRobot's EventBusOtto这样的EventBus。

我个人喜欢EventBus方法,因为它清晰,简单,并且需要的代码更少。

答案 1 :(得分:0)

我会使用一个活动和回调来与其他片段进行通信 - >这样做可以将所有内容保存在一个地方,而且我认为代码更易于维护。

答案 2 :(得分:0)

例如,你有FragmentA,FragmentB,FragmentC。 你需要创建这样的监听器:

public interface OnRecyclerviewListener{
    public void onItemClick(View v); //or something like for need in another fragments
}

在您的Activity中,您需要设置此侦听器以与其他片段进行通信

public class BaseActivity extand Activity{
private OnRecyclerviewListener onRecyclerviewListener=null;

public OnRecyclerviewListener getRecyclerviewListener(){
return onRecyclerviewListener;
}

public void setRecyclerviewListener(OnRecyclerviewListener listener){
this.onRecyclerviewListener=listener;
}

Fragmetn B和C必须实现此监听器并在onCreate(...)中设置为BaseActivity

((BaseActivity)getActivity()).setRecyclerviewListener(this);
片段中的

可以调用

    if(((BaseActivity)getActivity).getRecyclerviewListener()!=null){
    ((BaseActivity)getActivity).getRecyclerviewListener().onItemClick(view);//or something what you set in interface method;
}