在片段内的 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
}
为了说明我的意思,它类似于 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
}