错误:尝试调用虚拟方法';void android.widget.Filter.Filter(java.lang.CharSequence)和#x27;关于空对象引用

错误:尝试调用虚拟方法';void android.widget.Filter.Filter(java.lang.CharSequence)和#x27;关于空对象引用,java,android,filter,baseadapter,Java,Android,Filter,Baseadapter,我使用edit text.so在onTextChange Listener中调用了get filter方法实现了搜索功能。我的适配器是从基本适配器类而不是从阵列适配器类扩展而来的。因此,在我的适配器类中,我创建了filter方法并在ontextChange侦听器中调用该filter方法。当我在搜索栏中输入文本时,我的应用程序因为以下错误而崩溃:尝试在空对象引用上调用虚拟方法“void android.widget.Filter.Filter(java.lang.CharSequence)”。 这

我使用edit text.so在onTextChange Listener中调用了get filter方法实现了搜索功能。我的适配器是从基本适配器类而不是从阵列适配器类扩展而来的。因此,在我的适配器类中,我创建了filter方法并在ontextChange侦听器中调用该filter方法。当我在搜索栏中输入文本时,我的应用程序因为以下错误而崩溃:尝试在空对象引用上调用虚拟方法“void android.widget.Filter.Filter(java.lang.CharSequence)”。 这是我的适配器类:

public class Splitadapter extends BaseAdapter implements Filterable{
    /*
    * Variables Declaration section
    *
    *
    */
    private ArrayList<COntactsModel> _Contacts;
    private Context mContext;
    private LayoutInflater inflater;
    private ValueFilter valueFilter;
    private ArrayList<COntactsModel> mStringFilterList;

    public Splitadapter(Context context,ArrayList<COntactsModel> _Contacts){
        super();
        mContext = context;
        this._Contacts = _Contacts;
        mStringFilterList =  _Contacts;
        this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        getFilter();

    }//End of CustomAdapter constructor

    public int getCount(){
        return _Contacts.size();
    }//End of getCount method

    public Object getItem(int position){
        return _Contacts.get(position).getName();
    }//End of getItem method

    public long getItemId(int position){
        return position;
    }//End of getItemId method

    public class ViewHolder{
        TextView textviewName;
        TextView textviewNumber;
        CheckBox checkbox;
        ImageView image;
        int id;
    }

    public View getView(int position, View convertView, ViewGroup parent){
        ViewHolder holder;
        final int pos = position;

        if (convertView == null){
            holder = new ViewHolder();

            convertView = LayoutInflater.from(mContext).inflate(R.layout.list, null);
            holder.textviewName = (TextView) convertView.findViewById(R.id.name);
            holder.textviewNumber = (TextView) convertView.findViewById(R.id.mobile);
            holder.checkbox = (CheckBox) convertView.findViewById(R.id.check);
            holder.image = convertView.findViewById(R.id.image);
            convertView.setTag(holder);
        }else{
            holder = (ViewHolder) convertView.getTag();
        }//End of else

        holder.checkbox.setId(position);
        holder.textviewName.setId(position);
        holder.textviewNumber.setId(position);


        holder.textviewName.setText(_Contacts.get(position).getName());
        holder.textviewNumber.setText(_Contacts.get(position).getPhonenum());

        holder.id = position;

        return convertView;
    }//End of getView method

    @Override
    public Filter getFilter() {
        if(valueFilter==null) {
            valueFilter=new ValueFilter();
        }
        return null;
    }
    private class ValueFilter extends Filter {

        //Invoked in a worker thread to filter the data according to the constraint.
        @Override
        protected FilterResults performFiltering(CharSequence constraint) {
            FilterResults results=new FilterResults();
            if(constraint!=null && constraint.length()>0){
                ArrayList<COntactsModel> filterList=new ArrayList<COntactsModel>();
                for(int i=0;i<mStringFilterList.size();i++){
                    if((mStringFilterList.get(i).getName().toUpperCase())
                    .contains(constraint.toString().toUpperCase())) {
                        COntactsModel contacts = new COntactsModel();
                        contacts.setName(mStringFilterList.get(i).getName());
                        contacts.setPhonenum(mStringFilterList.get(i).getPhonenum());
                        filterList.add(contacts);
                    }
                }
                results.count=filterList.size();
                results.values=filterList;
            }else{
                results.count=mStringFilterList.size();
                results.values=mStringFilterList;
            }
            return results;
        }


        //Invoked in the UI thread to publish the filtering results in the user interface.
        @SuppressWarnings("unchecked")
        @Override
        protected void publishResults(CharSequence constraint,
                  FilterResults results) {
            _Contacts=(ArrayList<COntactsModel>) results.values;
            notifyDataSetChanged();
        }
    }
    //End of CustomAdapter instance inner class


}
如何解决这个问题

@Override
    public Filter getFilter() {
        if(valueFilter==null) {

            valueFilter=new ValueFilter();

        }

        return null;
    }
取代

    @Override
    public Filter getFilter() {
        if(valueFilter==null) {

            valueFilter=new ValueFilter();

        }

        return valueFilter;
    }
    @Override
    public Filter getFilter() {
        if(valueFilter==null) {

            valueFilter=new ValueFilter();

        }

        return valueFilter;
    }