0

我正在尝试定义 , 的子类SQLiteCursor,以重新定义它的一些功能(我fillWindow以此为例)。但是,我在数据库功能方面遇到了一些问题。

下面方法中的代码是从 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. 对于 DatabaseUtils 类型,方法 cursorPickFillWindowStartPosition(int, int) 未定义。
  2. 对于 SQLiteQuery 类型,方法 fillWindow(CursorWindow, int, int, boolean) 未定义。

第 1 项和第 2 项中的函数都是定义的,不是私有的,为什么我不能使用它们呢?

4

1 回答 1

1

我认为您正在查看一些旧代码。fillWindow()现在受到保护。不确定 DatabaseUtils 发生了什么。

于 2013-08-28T22:13:05.140 回答