Java Android androidx.SearchView不工作
在我的项目中,我已经在MaterialToolBar中实现了SearchView。除了最后一步外,一切正常。当我在搜索栏中键入任何内容并单击键盘上的“查找”按钮时,它不会显示任何内容。请帮忙 我问题的视频 Menu.xmlJava 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
<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
。谢谢,但我没有使用过滤器。我的解决方案列在上面。谢谢,但我没有使用过滤器。我的解决方案列在上面。