Problema de setFilterQueryProvider do cursor

Eu estou tentando filtrar os resultados de um cursor retornado da minha classe manipulador de banco de dados através do uso de 'setFilterQueryProvider' na classe de adaptador de cursor simples. No momento estou recebendo vários erros no seguinte método:

Erros atuais:

Erro 1:

The method FilterQueryProvider() is undefined for the type ViewAppointments.

Erro 2:

Syntax error, insert ";" to complete Statement.

Erro 3:

Illegal modifier for the variable runQuery; only final is permitted

Erro 4:

Syntax error on token ")", ; expected

Erro 5:

Void methods cannot return a value.

Erro 6:

Syntax error on token ")", delete this token.

Os erros acima são anotados no seguinte código:

DBHandlerApp changedAppoint = new DBHandlerApp (this, null, null);

             //ERROR 1 on 'FilterQueryProvider' and ERROR 2 on end ')'.
     cursorAdapter.setFilterQueryProvider(FilterQueryProvider()

            {

            //ERROR 3 on 'runQuery'. Error 4 on end ')'.
        public Cursor runQuery(CharSequence constraint)
        {
                //ERROR 5.
            return changedAppoint.getChanges(constraint.toString());

        }
        ERROR 6 on end ')'
    });

Aqui está a aula completa. Atualmente tenho este método problemático no meu método 'onCreate' da classe. O fato de 'ERRO 5' está reclamando sobre o tipo de retorno me leva a acreditar que estar em 'OnCreate' é o lugar errado, obviamente, é nulo. Colocando-o mais onde no código produz outros erros de colchetes.

Espero que alguém possa ver onde meu erro de layout está errado.

package com.example.flybase2;

import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.widget.SimpleCursorAdapter;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ListView;

public class ViewAppointments extends ListActivity implements OnClickListener {
SimpleCursorAdapter cursorAdapter;
ListView searchedAppView;
ImageButton searchAppoints;
EditText searchAppName;
Long id;

 //@SuppressWarnings("deprecation")
 //@SuppressWarnings("static-access")


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


setContentView(R.layout.appointmentview);

searchedAppView = (ListView)findViewById(android.R.id.list);

searchAppoints = (ImageButton) findViewById(R.id.btnSearchAppointName); 
searchAppName = (EditText) findViewById(R.id.inputAppointName); 

    DBHandlerApp DBAppointments = new DBHandlerApp(this, null, null);

    DBHandlerApp searchApps = new DBHandlerApp(this, null, null);

    searchApps.open();


    Cursor cursor = searchApps.getAppointmentsData();
     searchApps.close();
    startManagingCursor(cursor);


    String [] from = new String [] {DBAppointments.KEY_NAMEAPP, DBAppointments.KEY_TYPEAPP, DBAppointments.KEY_TIMEAPP, DBAppointments.KEY_DATEAPP, DBAppointments.KEY_COMMENTAPP};
    int [] to = new int [] {R.id.txtAppointName, R.id.txtAppointType, R.id.txtAppointTime, R.id.txtAppointDate, R.id.txtAppointCom};


    cursorAdapter = new SimpleCursorAdapter(this, R.layout.setappointviews, cursor, from, to);
    searchedAppView.setAdapter(cursorAdapter);

    searchedAppView.setTextFilterEnabled(true);

    searchAppoints.setOnClickListener(this);

    searchAppName.addTextChangedListener(new TextWatcher()
     {

        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {


        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {


        }

        @Override
        public void afterTextChanged(Editable s) {



                cursorAdapter.getFilter().filter(s.toString());

        }

     });

            //********** ERRORS **********
    DBHandlerApp changedAppoint = new DBHandlerApp (this, null, null);

     cursorAdapter.setFilterQueryProvider(FilterQueryProvider()
    {
        public Cursor runQuery(CharSequence constraint)
        {
            return changedAppoint.getChanges(constraint.toString());

        }
    });


    };


@Override
public void onClick(View clickedSearch)

{

    String searchedName = searchAppName.getText().toString();

    DBHandlerApp searchOnName = new DBHandlerApp(this, null, null);
    DBHandlerApp getColumns = new DBHandlerApp(this, null, null);
    searchOnName.open();

    Cursor nameResult = searchOnName.searchAppByName(searchedName);

    @SuppressWarnings("static-access")
    String [] from = new String [] {getColumns.KEY_NAMEAPP, getColumns.KEY_TYPEAPP, getColumns.KEY_TIMEAPP, getColumns.KEY_DATEAPP, getColumns.KEY_COMMENTAPP};
    int [] to = new int [] {R.id.txtAppointName, R.id.txtAppointType, R.id.txtAppointTime, R.id.txtAppointDate, R.id.txtAppointCom};

    @SuppressWarnings("deprecation")

    SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(this, R.layout.setappointviews, nameResult, from, to);
    searchedAppView.setAdapter(cursorAdapter);

}

@Override
protected void onListItemClick(ListView l, View v, int position, long idd) {
    super.onListItemClick(l, v, position, idd);
    final DBHandlerApp delApp = new DBHandlerApp(this, null, null);

    id = idd;

    final CharSequence[] items = {"Edit Appointment Details", "Delete Appointment"};

    Builder alertDialogBuilder = new AlertDialog.Builder(ViewAppointments.this);

    alertDialogBuilder.setTitle("Appointment Options:");



    alertDialogBuilder.setItems(items, new DialogInterface.OnClickListener() {

        public void onClick(DialogInterface dialog, int item) {

            if (items[item].equals("Edit Appointment Details")) {

                Intent setName = new Intent("com.example.flybase2.AppointmentEditChanges");
                setName.putExtra("passedID", id);
                startActivity(setName);

            }

            else if (items[item].equals("Delete Appointment")) {

                      delApp.open();
                      delApp.deleteAppointment(id);
                      delApp.close();

            }

            }  

        });

    alertDialogBuilder.show();
}

}

questionAnswers(2)

yourAnswerToTheQuestion