2012-07-25 7 views
34

Ich habe eine Datenbank durch Erweitern SQLiteOpenHelper Klasse erstellt. Und es ist auch geschaffen. Dies ist Code, den ich klebenWas ist die Verwendung von SQLiteDatabase.CursorFactory in Android?

public Imagehelper(Context context) { 
    super(context, DATABASE_NAME, null, SCHEMA_VERSION); 

    cntxt = context; 
    filename = Environment.getExternalStorageDirectory(); 

    DATABASE_FILE_PATH_EXTERNAL = filename.getAbsolutePath()+File.separator+DATABASE_NAME; 
    Log.i("Log", ":"+DATABASE_FILE_PATH_EXTERNAL); 
} 

Hier funktioniert alles gut. Aber wenn Sie auf die Parameter konzentrieren, übergeben Sie Super Super (Kontext, DATABASE_NAME, null, SCHEMA_VERSION);. Ich kann den Null-Parameter nicht verstehen. Ich weiß, hier müssen wir das SQLiteDatabase.CursorFactory Objekt übergeben.

Aber wie ?? Und was nutzt das?

Antwort

47

Der Grund für das Übergeben von null ist das Standardverhalten SQLiteCursor. Wenn Sie ein specialized Cursor implementieren möchten, können Sie es erhalten, indem Sie das Cursor class erweitern (das ist für das Durchführen zusätzlicher Operationen auf den Abfrage-Ergebnissen). In diesen Fällen können Sie die Klasse CursorFactory verwenden, um eine Instanz Ihrer Cursor-Implementierung zurückzugeben. Hier ist das Dokument, für das

SQLiteDatabase.CursorFactory DOC

verwendet, damit Unterklassen von Cursor zurückkehrt, wenn Abfrage aufrufen.

+11

Haben Sie ein Beispiel, wann Sie das tun könnten? – Roel

Verwandte Themen