0
我試圖定義一個SQLiteCursor
的子類,以重新定義它的一些功能(我使用fillWindow
作爲示例)。但是,我遇到了數據庫函數的一些問題。Eclipse無法找到數據庫方法
下面的方法中的代碼是從源SQLiteCursor(我只是爲了這個問題刪除了一些垃圾)複製。
package com.malabarba.util;
import android.database.CursorWindow;
import android.database.DatabaseUtils;
import android.database.sqlite.SQLiteCursor;
import android.database.sqlite.SQLiteCursorDriver;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteQuery;
import android.util.Log;
public class HugeCursor extends SQLiteCursor {
private SQLiteQuery mQuery;
public HugeCursor(SQLiteDatabase db, SQLiteCursorDriver driver, String editTable, SQLiteQuery query, int c) {
super(db, driver, editTable, query);
mQuery = query;
}
private void fillWindow(int requiredPos) {
int startPos = DatabaseUtils.cursorPickFillWindowStartPosition(requiredPos, 0);
mQuery.fillWindow(mWindow, startPos, requiredPos, false);
mCursorWindowCapacity = mWindow.getNumRows();
}
}
所有問題似乎與沒有被找到的方法:
- 方法cursorPickFillWindowStartPosition(INT,INT)是未定義的類型DatabaseUtils。
- 對於SQLiteQuery類型,未定義方法fillWindow(CursorWindow,int,int,boolean)。
第1項和第2項中的功能都是定義的而不是私有的,所以爲什麼我不能使用它們?
實際上,DatabaseUtils方法僅在4.1.1中添加,也許您在中間定位了一個SDK(在其他方法更改爲受保護並且DatabaseUtils被引入之前)。 – dmon
[DatabaseUtils方法](https://android.googlesource.com/platform/frameworks/base/+/jb-mr0-release/core/java/android/database/DatabaseUtils.java)實際上是隱藏API的一部分因爲它有'@ hide'註釋。 –
我明白了。好的,我可以複製databaseUtils方法的源代碼,但fillWindow()方法會複雜得多= /。 – Malabarba