Курсор setFilterQueryProvider проблема
я пытаюсь отфильтровать результаты курсора, возвращенного из моего класса обработчика базы данных с помощью 'setFilterQueryProvider» на простой класс курсора адаптер. На данный момент яполучаю несколько ошибок по следующему методу:
Текущие ошибки:
Ошибка 1:
The method FilterQueryProvider() is undefined for the type ViewAppointments.
Ошибка 2:
Syntax error, insert ";" to complete Statement.
Ошибка 3:
Illegal modifier for the variable runQuery; only final is permitted
Ошибка 4:
Syntax error on token ")", ; expected
Ошибка 5:
Void methods cannot return a value.
Ошибка 6:
Syntax error on token ")", delete this token.
Вышеуказанные ошибки отмечены в следующем коде:
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 ')'
});
Вот законченный класс. В настоящее время у меня есть этот проблемный метод в моемOnCreate» метод класса. Факт 'ОШИБКА 5 ' жалоба на тип возврата заставляет меня поверить, что это вOnCreate» это неправильное место, поскольку, очевидно, это пустота. Размещение его в другом месте кода приводит к ошибкам в других скобках.
Надеюсь, кто-нибудь увидит, где моя ошибка компоновки идет не так.}
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();
}