2013-08-28 182 views
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(); 
    } 
} 

所有問題似乎與沒有被找到的方法:

  1. 方法cursorPickFillWindowStartPosition(INT,INT)是未定義的類型DatabaseUtils。
  2. 對於SQLiteQuery類型,未定義方法fillWindow(CursorWindow,int,int,boolean)。

第1項和第2項中的功能都是定義的而不是私有的,所以爲什麼我不能使用它們?

回答

1

我想你正在看一些舊式的代碼。 fillWindow()now protected。但不確定DatabaseUtils發生了什麼。

+0

實際上,DatabaseUtils方法僅在4.1.1中添加,也許您在中間定位了一個SDK(在其他方法更改爲受保護並且DatabaseUtils被引入之前)。 – dmon

+0

[DatabaseUtils方法](https://android.googlesource.com/platform/frameworks/base/+/jb-mr0-release/core/java/android/database/DatabaseUtils.java)實際上是隱藏API的一部分因爲它有'@ hide'註釋。 –

+0

我明白了。好的,我可以複製databaseUtils方法的源代碼,但fillWindow()方法會複雜得多= /。 – Malabarba