Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android androidx.SearchView不工作_Java_Android_Xml_Menu_Searchview - Fatal编程技术网

Java Android androidx.SearchView不工作

Java Android androidx.SearchView不工作,java,android,xml,menu,searchview,Java,Android,Xml,Menu,Searchview,在我的项目中,我已经在MaterialToolBar中实现了SearchView。除了最后一步外,一切正常。当我在搜索栏中键入任何内容并单击键盘上的“查找”按钮时,它不会显示任何内容。请帮忙 我问题的视频 Menu.xml <item android:id="@+id/menu_search" android:title="@string/search" android:icon="@drawable/ic

在我的项目中,我已经在MaterialToolBar中实现了SearchView。除了最后一步外,一切正常。当我在搜索栏中键入任何内容并单击键盘上的“查找”按钮时,它不会显示任何内容。请帮忙

我问题的视频

Menu.xml

    <item
    android:id="@+id/menu_search"
    android:title="@string/search"
    android:icon="@drawable/ic_search"
    app:showAsAction="always|collapseActionView"
    app:actionViewClass="androidx.appcompat.widget.SearchView" />
试试这个

在菜单文件中:

<item
    android:id="@+id/actionTenantSearch"
    android:icon="@drawable/ic_search"
    android:title="@string/search"
    app:showAsAction="ifRoom|collapseActionView"
    app:actionViewClass="androidx.appcompat.widget.SearchView"
    />
试试这个

在菜单文件中:

<item
    android:id="@+id/actionTenantSearch"
    android:icon="@drawable/ic_search"
    android:title="@string/search"
    app:showAsAction="ifRoom|collapseActionView"
    app:actionViewClass="androidx.appcompat.widget.SearchView"
    />

@vaibhav已经为listview或recyclerview实现了filterable类。然后在搜索查询中调用可筛选方法。你会得到适当的结果 像这样

公共类Adaptername扩展了RecyclerView。适配器实现可筛选{

}

自定义过滤器

@Override
public Filter getFilter() {
    if (filter == null) {
        filter = new CustomFilter();
    }
    return filter;
}

class CustomFilter extends Filter {
    @Override
    protected FilterResults performFiltering(CharSequence constraint) {
        // TODO Auto-generated method stub
        FilterResults results = new FilterResults();
        if (constraint != null && constraint.length() > 0) {
            //CONSTARINT TO UPPER
            constraint = constraint.toString().toUpperCase();
            ArrayList<AllInOnetItem> filters = new ArrayList<AllInOnetItem>();
            //get specific items
            for (int i = 0; i < filterList.size(); i++) {
                if (filterList.get(i).getName().toUpperCase().contains(constraint)) {
                    AllInOnetItem p = new AllInOnetItem(filterList.get(i).getName(), filterList.get(i).getNumber(),filterList.get(i).getEmail());
                    filters.add(p);
                }
            }
            results.count = filters.size();
            results.values = filters;
        } else {
            results.count = filterList.size();
            results.values = filterList;
        }
        return results;
    }

    @Override
    protected void publishResults(CharSequence constraint, FilterResults results) {
        // TODO Auto-generated method stub
        allInOnetItems = (ArrayList<AllInOnetItem>) results.values;
        notifyDataSetChanged();
    }
}
@覆盖
公共过滤器getFilter(){
if(filter==null){
filter=新的CustomFilter();
}
回流过滤器;
}
类CustomFilter扩展了过滤器{
@凌驾
受保护的筛选器结果性能筛选(CharSequence约束){
//TODO自动生成的方法存根
FilterResults results=新的FilterResults();
if(constraint!=null&&constraint.length()>0){
//上等警员
constraint=constraint.toString().toUpperCase();
ArrayList过滤器=新的ArrayList();
//获取特定项目
对于(int i=0;i
@vaibhav您是否已在listview或recyclerview中实现了filterable类。然后在搜索查询中调用可筛选方法。你会得到适当的结果 像这样

公共类Adaptername扩展了RecyclerView。适配器实现可筛选{

}

自定义过滤器

@Override
public Filter getFilter() {
    if (filter == null) {
        filter = new CustomFilter();
    }
    return filter;
}

class CustomFilter extends Filter {
    @Override
    protected FilterResults performFiltering(CharSequence constraint) {
        // TODO Auto-generated method stub
        FilterResults results = new FilterResults();
        if (constraint != null && constraint.length() > 0) {
            //CONSTARINT TO UPPER
            constraint = constraint.toString().toUpperCase();
            ArrayList<AllInOnetItem> filters = new ArrayList<AllInOnetItem>();
            //get specific items
            for (int i = 0; i < filterList.size(); i++) {
                if (filterList.get(i).getName().toUpperCase().contains(constraint)) {
                    AllInOnetItem p = new AllInOnetItem(filterList.get(i).getName(), filterList.get(i).getNumber(),filterList.get(i).getEmail());
                    filters.add(p);
                }
            }
            results.count = filters.size();
            results.values = filters;
        } else {
            results.count = filterList.size();
            results.values = filterList;
        }
        return results;
    }

    @Override
    protected void publishResults(CharSequence constraint, FilterResults results) {
        // TODO Auto-generated method stub
        allInOnetItems = (ArrayList<AllInOnetItem>) results.values;
        notifyDataSetChanged();
    }
}
@覆盖
公共过滤器getFilter(){
if(filter==null){
filter=新的CustomFilter();
}
回流过滤器;
}
类CustomFilter扩展了过滤器{
@凌驾
受保护的筛选器结果性能筛选(CharSequence约束){
//TODO自动生成的方法存根
FilterResults results=新的FilterResults();
if(constraint!=null&&constraint.length()>0){
//上等警员
constraint=constraint.toString().toUpperCase();
ArrayList过滤器=新的ArrayList();
//获取特定项目
对于(int i=0;i
我更改了代码行的顺序,之后它工作正常

之前:

super.onCreate(savedInstanceState);
Toolbar toolbar = findViewById(R.id.category1_toolbar);
setSupportActionBar(toolbar);
setContentView(R.layout.activity_product_list);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_product_list);
Toolbar toolbar = findViewById(R.id.category1_toolbar);
setSupportActionBar(toolbar);
之后:

super.onCreate(savedInstanceState);
Toolbar toolbar = findViewById(R.id.category1_toolbar);
setSupportActionBar(toolbar);
setContentView(R.layout.activity_product_list);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_product_list);
Toolbar toolbar = findViewById(R.id.category1_toolbar);
setSupportActionBar(toolbar);

在那之后,我改变了代码行的顺序,它工作得很好

之前:

super.onCreate(savedInstanceState);
Toolbar toolbar = findViewById(R.id.category1_toolbar);
setSupportActionBar(toolbar);
setContentView(R.layout.activity_product_list);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_product_list);
Toolbar toolbar = findViewById(R.id.category1_toolbar);
setSupportActionBar(toolbar);
之后:

super.onCreate(savedInstanceState);
Toolbar toolbar = findViewById(R.id.category1_toolbar);
setSupportActionBar(toolbar);
setContentView(R.layout.activity_product_list);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_product_list);
Toolbar toolbar = findViewById(R.id.category1_toolbar);
setSupportActionBar(toolbar);

您是否添加了
?是的
请检查我的代码您是否添加了
?是的
请检查我的代码我现在和以前都尝试过此代码,但没有成功在我的案例中,检查我随附的视频,你会理解问题。在logcat中,它没有显示任何与错误相关的内容。@VaibhavA解决了这个问题吗?是的,amiya,我通过交换两行解决了这个问题。检查我的以上答案。你能告诉我为什么这不起作用吗?@VaibhavA大错特错。您应该先执行
setContentView
。我现在和以前都试过这段代码,但在我的案例中不起作用,请检查我附带的视频,您会明白问题所在。在logcat中,它没有显示任何与错误相关的内容。@VaibhavA解决了这个问题吗?是的,amiya我通过交换两行解决了这个问题。检查我的以上答案。你能告诉我为什么这不起作用吗?@VaibhavA大错特错。您应该先执行
setContentView
。谢谢,但我没有使用过滤器。我的解决方案列在上面。谢谢,但我没有使用过滤器。我的解决方案列在上面。