我有3个片段,我可以使用水平滑动(ViewPager)访问。在每个片段中都有一个Recyclerview(来源,翻译和描述)。现在我已经实现了代码,可以在recyclerview中选择项目。我现在喜欢的是,当我点击第一个recylcerview中的项目时,第二个和第三个recylcerview中的项目也会被选中。 我是否需要检查启动片段的活动,或者建议的方法是什么。我不需要代码,只是最好的方法来做到这一点......
非常感谢
答案 0 :(得分:1)
您有多种方法可以实现这一目标,但总的来说,您正在寻找发布/订阅者/观察者解决方案。
实现这一目标的一种方法是利用托管活动communicate among fragments。在这种方法中,您定义一个接口并让您的Fragments各自实现该接口,然后当其中一个RecyclerViews'选择项目后,您将通知其他片段。另一种解决方案是使用像GreenRobot's EventBus或Otto这样的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;
}