Android 正在使用ImageView搜索自定义ListView而不是Fitler图像

Android 正在使用ImageView搜索自定义ListView而不是Fitler图像,android,Android,我正在处理一个项目,其中有一个带有imageview的自定义listview和一个位于imageview顶部的textview 主要片段: CategoriesAdapter adapter; edt_SearchBar.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int c

我正在处理一个项目,其中有一个带有imageview的自定义listview和一个位于imageview顶部的textview

主要片段:

CategoriesAdapter adapter;
edt_SearchBar.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                adapter.getFilter().filter(s);

            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });
CategoriesAdapter类:

public class CategoriesAdapter extends BaseAdapter {
    List<CategoryDataModel> category_list,category_filter_list;
    Context context;
    LayoutInflater inflater;
    ImageLoader imageLoader;
    ViewHolder vh;
    ValueFilter filter;
    int counter=0;
    String[] images_array;

    public CategoriesAdapter(List<CategoryDataModel> category_list, Context context) {
        this.category_list=category_list;
        this.category_filter_list=category_list;
        this.context=context;
        inflater= (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        imageLoader= AppController.getInstance().getImageLoader();
        images_array=new String[]{"kochi_cinepolis.png","kochi_padma.png"};
    }

    @Override
    public int getCount() {
        return category_list.size();
    }

    @Override
    public Object getItem(int position) {
        return category_list.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if(convertView==null)
        {
            convertView=inflater.inflate(R.layout.category_view_style, null);
            vh=new ViewHolder();
            if (imageLoader == null)
                imageLoader = AppController.getInstance().getImageLoader();
            vh.imageView = (NetworkImageView) convertView .findViewById(R.id.imageView_grid);
            vh.categoryName= (TextView) convertView.findViewById(R.id.tvcategory);
            convertView.setTag(vh);
        }
        else
        {
            vh=(ViewHolder) convertView.getTag();
        }



        vh.imageView.setImageUrl(AppConstant.IMAGE_FOLDER +images_array[position], imageLoader);

        vh.imageView.setDefaultImageResId(R.drawable.default_category_loading);

        vh.categoryName.setText(category_list.get(position).getCategory_name().toUpperCase());

        return convertView;
    }
    public class ViewHolder
    {
        NetworkImageView imageView;
        TextView categoryName;
    }
    public ValueFilter getFilter() {
        if(filter==null) {

            filter=new ValueFilter();
        }

        return filter;
    }

    public class ValueFilter extends Filter {

        @Override
        protected FilterResults performFiltering(CharSequence constraint) {

            FilterResults results=new FilterResults();
            if(constraint!=null && constraint.length()>0){
                String cons_value=constraint.toString();

                List<CategoryDataModel> filterList=new ArrayList<>();

                for(int i=0;i<category_filter_list.size();i++){

                    if(category_filter_list.get(i).getCategory_name().toLowerCase().contains(cons_value.toLowerCase())) {

                        filterList.add(category_filter_list.get(i));

                    }
                }


                results.count=filterList.size();

                results.values=filterList;

            }else{

                results.count=category_filter_list.size();

                results.values=category_filter_list;

            }

            return results;
        }

        @Override
        protected void publishResults(CharSequence constraint, FilterResults results) {
            category_list=(List<CategoryDataModel>) results.values;
            notifyDataSetChanged();

        }
    }
}
公共类分类适配器扩展BaseAdapter{
列表类别列表、类别过滤器列表;
语境;
充气机;
图像加载器;
视窗座;
数值滤波器;
int计数器=0;
字符串[]图像\u数组;
公共类别适配器(列表类别\u列表,上下文){
这个.category\u list=category\u list;
此.category\u filter\u list=category\u list;
this.context=context;
充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
imageLoader=AppController.getInstance().getImageLoader();
images_array=新字符串[]{“kochi_cinepolis.png”,“kochi_padma.png”};
}
@凌驾
public int getCount(){
返回类别_list.size();
}
@凌驾
公共对象getItem(int位置){
返回类别列表。获取(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
if(convertView==null)
{
convertView=充气机。充气(R.layout.category\u view\u样式,空);
vh=新的视窗支架();
如果(imageLoader==null)
imageLoader=AppController.getInstance().getImageLoader();
vh.imageView=(NetworkImageView)convertView.findviewbyd(R.id.imageView_网格);
vh.categoryName=(TextView)convertView.findViewById(R.id.tvcategory);
convertView.setTag(vh);
}
其他的
{
vh=(ViewHolder)convertView.getTag();
}
vh.imageView.setImageUrl(AppConstant.IMAGE\u文件夹+images\u数组[position],imageLoader);
vh.imageView.setDefaultImageResId(R.drawable.default\u category\u loading);
vh.categoryName.setText(category_list.get(position.getCategory_name().toUpperCase());
返回视图;
}
公共类视图持有者
{
网络图像视图;
TextView类别名称;
}
public ValueFilter getFilter(){
if(filter==null){
filter=新值filter();
}
回流过滤器;
}
公共类ValueFilter扩展了筛选器{
@凌驾
受保护的筛选器结果性能筛选(CharSequence约束){
FilterResults results=新的FilterResults();
if(constraint!=null&&constraint.length()>0){
字符串cons_value=constraint.toString();
List filterList=new ArrayList();

对于(int i=0;i您的适配器需要实现Filterable接口,它必须实现getFilter(),然后您需要在自定义适配器中重写getFilter(),并相应地过滤数据源,并通知listview数据集已更改。

我尝试实现Filterable接口并使用重写的getFilter())方法。该问题仍然存在。我已修复该问题。设置文本和设置图像的列表应与筛选列表相同。我无法为图像使用单独的列表。