如何从另一个片段获取适配器

时间:2018-10-07 20:06:19

标签: android android-fragments android-recyclerview android-adapter

我有一个幻灯片面板,里面有一个片段,每个部分有一个片段(您将在屏幕截图中看到)。

我有第一部分(片段0),用于存储在另一个适配器中选择的项目。如何引用这些片段和适配器,以便能够修改适配器上的项目。

Slide

我将片段存储在:

private void setUpOperateOptionSectionItemFragment(OperateModel model, int fragmentPosition){
        LinearLayout container = getSectionContainer();
        activityView.getLaySectionsContainer().addView(container);
        OperateOptionSectionItemFragment fragment = OperateOptionSectionItemFragment.newInstance(model, fragmentPosition, this);
        FragmentManager fragmentManager = activityView.getActivity().getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.add(container.getId(), fragment, OPERATE_OPTION_FRAGMENT_TAG+fragmentPosition);
        fragmentTransaction.commit();
        operateOptionSectionItemFragmentList.add(fragment);
    }

当我单击片段1、2、3的适配器项时,我需要添加或删除(如果存在)片段0的适配器中的项。

如何使用此适配器,如果我对所有适配器使用相同的适配器,如何区分。

1 个答案:

答案 0 :(得分:3)

您可以通过活动回调访问其他片段。 它看起来像这样:

  1. 创建界面

    public interface MyActivityCallback {
        void doSomeWithFragment();
    }
    
  2. 让您的活动覆盖此界面

    public MyActivity extends AppCompatActivity implements MyActivityCallback {
        ...
        MyFragment fragment1;
        MyFragment fragment2;
        ...
        void doSomeWithFragment() {
           ...
           fragment1.doSome();
        }
    }
    
  3. 在您的片段中找到此接口。最好在onAttach()方法中进行此操作:

    public MyFragment extends Fragment {
        MyActivityCallback callback;
    
        @Override
        public void onAttach(Context context) {
            super.onAttach(context);
            callback = (MyActivityCallback) context; // context - is your activity, that added this fragment
        }
        ...
    
        public void someFunction() {
            // here you want to change some in your other fragments:
           callback.doSomeWithFragment();
        }
    }
    

所以,用几句话来说:

活动存储对所有子片段的引用
片段存储对由父活动实现的接口回调的引用。
因此,您调用活动通过此回调执行一些操作,而活动正在执行该工作,因为它具有所有片段的引用。