这是包含两个片段的库存活动。我想在条形码片段内实现搜索视图,以便用户可以轻松地从库存中搜索项目。我在两个片段之间使用了2个片段、2个类和一个适配器,但问题是search视图不能正常工作。我在下面提到了在片段中实现search视图的代码。我无法在代码中找到错误或导致问题的东西。
这是库存活动的代码。库存(活动)
((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);
setHasOptionsMenu(true);
@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
inflater.inflate(R.menu.stock,menu);
MenuItem item =menu.findItem(R.id.search);
SearchView searchView= (SearchView) item.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
//Log.d("TAG", "onQueryTextChange: "+newText);
//adp_additem_nobar= new Adp_additem_nobar(additem.this,itemList);
//WithBarcode.adp_stock_withbar.getFilter().filter(newText);
//adp_additem_nobar.notifyDataSetChanged();
//adp_additem_nobar.notifyAll();
return false;
}
});
super.onCreateOptionsMenu(menu, inflater);
此片段将包含具有品牌商品条形码的商品。我已经在这个片段中实现了search视图,但是search视图不能正常工作。
带条形码(片段)
Stock.searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
adp_stock_withbar.getFilter().filter(newText);
return false;
}
});
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
这是适配器的类。请检查适配器类是否有任何问题或需要更正。适配器
class adp_stock_withbar extends RecyclerView.Adapter<adp_stock_withbar.ViewHolder> implements Filterable
@Override
public Filter getFilter() {
return filter;
}
Filter filter= new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
List<String> fillist= new ArrayList<>();
if(constraint.toString().isEmpty()){
fillist.addAll(list);
}
else {
for(String s:list){
if(s.toLowerCase().contains(constraint.toString().toLowerCase())){
fillist.add(s);
}
}
}
FilterResults filterResults= new FilterResults();
filterResults.values=fillist;
return filterResults;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
stringList.clear();
stringList.addAll((Collection<? extends String>) results.values);
notifyDataSetChanged();
}
};
暂无答案!
目前还没有任何答案,快来回答吧!