在片段内的 RecyclerView 中选择项目时,将工具栏与其他工具栏叠加

Overlay toolbar with other toolbar when item is selected in RecyclerView which is inside a fragment

为了说明我的意思,它类似于 WhatsApp,选择聊天时工具栏中会显示各种选项。

我有一个类似的布局,所以 MainActivity 和 Fragments 包含 RecyclerViews。 Now when an item in a RecyclerView is selected I would like to get a similar behaviour as in WhatsApp. RecyclerViews 有一个实现 OnClickListener 的适配器。 但是,从这个适配器我似乎无法从 MainActivity 访问视图。我尝试了以下方法(在 Adapter 的 OnClick 方法中),但它没有用,因为找不到视图。

View view = getActivity().findViewById(R.id.toolbar_main_activity);
if( view instanceof Toolbar) {
    Toolbar toolbar = (Toolbar) view;
    toolbar.setTitle("TestTitle");
}

有谁知道如何获得预期的行为或有教程参考?

更新:谁也被这个困住了,这仍然很混乱,这是我用自己的话解决它的方法

我的片段通过向其添加以下代码来包含接口;

OnItemsSelected mCallBack;

public interface OnItemsSelected {
    void onToolbarOptions(String title);
}

@Override
public void onAttach(Context context) {
    super.onAttach(context);
    mCallback = (OnItemsSelected) getActivity();
}

我也是这样把'mCallback'传给适配器的;

MyAdapter adapter = new MyAdapter(myList, mCallback);

RecyclerView 适配器实现了 OnClickListener。在我调用的 OnClick 方法中; 'mCallBack.onToolbarOptions("someTitle");'。最后我让我的 MainActivity 实现了这个方法; 'implements myFragment.onItemsSelected' 我还添加了以下代码;

@Override
public void onToolbarOptions(String title) {
    toolbar.setTitle(title);
}

有了这个,只改变了标题,但是从这里可以很容易地对工具栏进行其他更改,例如更改菜单项。

在你的 Fragment 中,你创建了一个接口和一个全局变量,如下所示:

OnItemsSelected mCallBack;

public interface OnItemsSelected {
    public void onToolbarOptions();
}

然后当您的 RecyclerView 项目被选中或点击时,您调用:

mCallBack.onToolbarOptions();

在你的 Activity 中实现这样的接口加上方法 onToolbarOptions():

public static class YourActivityName extends AppCompatActivity
    implements YourFragmentName.OnItemsSelected {

   public void onToolbarOptions(){
    // CHANGE YOUR TOOLBAR HERE
   }

  //.....OTHER STUFFS IN YOUR ACTIVITY
}