Java 如何在不显示recyclerview的情况下使用searchview?

Java 如何在不显示recyclerview的情况下使用searchview?,java,android-studio,Java,Android Studio,我有一个活动,其中有一些按钮与此无关,在顶部的RelativeLayout中还有一个searchview。我想要的是,当我在searchview上写东西时,屏幕上会出现recyclerview数组,但当我不写任何东西时,屏幕上会出现我之前告诉过你的按钮 为了避免在不使用searchview时显示recyclerView,我所做的是在其宽度和高度参数中设置0dp 这是我的MainActivity.java: 公共类活动实现Adapter2.OnRecipeListener{ 巴顿沃杜拉; 巴顿卡内

我有一个活动,其中有一些按钮与此无关,在顶部的RelativeLayout中还有一个searchview。我想要的是,当我在searchview上写东西时,屏幕上会出现recyclerview数组,但当我不写任何东西时,屏幕上会出现我之前告诉过你的按钮

为了避免在不使用searchview时显示recyclerView,我所做的是在其宽度和高度参数中设置0dp

这是我的MainActivity.java:

公共类活动实现Adapter2.OnRecipeListener{
巴顿沃杜拉;
巴顿卡内;
巴顿面食;
按钮boton_sopas;
佩斯卡多斯波顿钮扣;
按钮boton_ensaladas;
私人回收站;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(右布局、活动);
此.setRequestedOrientation(ActivityInfo.SCREEN\u ORIENTATION\u Graphic);
boton_verdura=(按钮)findViewById(R.id.boton_verduras);
boton_carne=(按钮)findViewById(R.id.boton_carnes);
boton_面食=(按钮)findViewById(R.id.boton_面食);
boton_sopas=(按钮)findViewById(R.id.boton_sopas);
boton_pescados=(按钮)findViewById(R.id.boton_pescados);
boton_ensaladas=(按钮)findViewById(R.id.boton_ensaladas);
boton\u verdura.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意念在=新意念(菜肴。这个,绿色。类);
星触觉(in);
}
});
boton\u carne.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意图in=新意图(disks.this,Carnes.class);
星触觉(in);
}
});
boton\u.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意式烹饪=新的意式烹饪(菜肴、这道菜、意大利面、类);
星触觉(in);
}
});
boton\u sopas.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Intent in=新的Intent(disks.this,Sopas.class);
星触觉(in);
}
});
boton_pescados.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Intent in=新的Intent(碟形,这个,Pescados.class);
星触觉(in);
}
});
boton_ensaladas.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Intent in=新的Intent(disks.this,Ensaladas.class);
星触觉(in);
}
});
recyclerView=findViewById(R.id.lv_prueba);
LinearLayoutManager layoutManager=新的LinearLayoutManager(此);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(layoutManager);
List listItems=new ArrayList();
列表项。添加(新实体2(R.drawable.calabacines_3,“calabacines”,“10分钟”,4,R.drawable.color_ensaladas));
列表项。添加(新实体2(R.drawable.patatas_deluxe_Specialiadas_70523_300_150,“patatas”,“15分钟”,2,R.drawable.color_ensaladas));
添加(新的实体2(R.drawable.tomate,“Tomates”,“2分钟”,5,R.drawable.color_ensaladas));
Adapter2 Adapter2=新Adapter2(列表项,此项);
recyclerView.setAdapter(适配器2);
Adapter2.notifyDataSetChanged();
}
@凌驾
公共空间(内部位置){
如果(位置==0){
意向in=新意向(此,Judias_verdes.类);
星触觉(in);
}
如果(位置==1){
意图in=新意图(这个,撒丁岛fritas.class);
星触觉(in);
}
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
MenuInflater充气机=getMenuInflater();
充气机。充气(右菜单。示例菜单,菜单);
MenuItem searchItem=menu.findItem(R.id.action\u search);
SearchView SearchView=(SearchView)searchItem.getActionView();
searchView.setOnQueryTextListener(新的searchView.OnQueryTextListener(){
@凌驾
公共布尔值onQueryTextSubmit(字符串查询){
返回false;
}
@凌驾
公共布尔onQueryTextChange(字符串newText){
AdapterO2.getFilter().filter(新文本);
返回false;
}
});
返回true;
}
}
这是我的Mainactivity.xml


我不知道该怎么办,因为我从来没有使用过SearchView,所以任何帮助都是有用的

谢谢

运行应用程序时尝试进入活动时出现的新问题:

08-14 16:33:07.115 17470-17470/com.test.platos_4 E/AndroidRuntime:FATAL EXCEPTION:main
进程:com.test.platos_4,PID:17470
java.lang.ClassCastException:android.support.v7.widget.SearchView不能强制转换为android.widget.SearchView
在com.test.platos_4.disks.onCreateOptions菜单(disks.java:136)上
位于android.app.Activity.onCreatePanelMenu(Activity.java:3546)
位于android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:328)
在android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:93)中
位于android.support.v7.app.AppCompateDelegateImplbase$AppCompateWindowCallBackbase.onCreatePanelMenu(AppCompateDelegateImplbase.java:332)
Adaptador2 Adaptador2 = new Adaptador2(listItems, this); // this is bad
recyclerView.setAdapter(Adaptador2);
Adaptador2.notifyDataSetChanged();
// at the top of your main activity define it
private Adaptador2 adaptador2;
// create your instance of it 
adaptador2 = new Adaptador2(listItems, this);
recyclerView.setAdapter(adaptador2);
adaptador2.notifyDataSetChanged();
// in onCreateOptionsMenu use lower case one to reference the object instance not 
// the class 
adaptador2.getFilter().filter(newText);
@Override
public boolean onQueryTextChange(String newText) {
    // this will hide your recycler anytime the search query is empty
    // and show it anytime there is a search query
    if (newText == "") {
        recyclerView.setVisibilty(View.GONE);
    } else {
        recyclerView.setVisibilty(View.VISIBLE);
    }

    adaptador2.getFilter().filter(newText);
    return false;
}