8

现在,我在尝试在我的自定义 SimpleCursorAdapter 中实现 FilterQueryProvider 时遇到了问题,因为我不确定在 FilterQueryProvider 的 runQuery 函数中要做什么。

换句话说,由于包含我的 ListView 的查询基本上从我的数据库表中获取 rowID、名称和第三列,我希望能够根据 name 列的部分值过滤游标。

但是,我不确定是否可以直接从 runQuery 执行此操作而无需扩展我的 DB 类,因为我想过滤现有游标,或者我是否必须在我的 DB 类中创建一个新的查询函数来部分搜索我的 name 列,并且如果是这样,我将如何在 runQuery 中使用 CharSequence 约束参数时创建查询语句?

我还担心与尝试基于部分文本运行多个查询相关的性能问题,因为有问题的数据库表有大约 1300-1400 行。换句话说,我会在尝试过滤光标时遇到瓶颈吗?

4

1 回答 1

3

您需要运行一个查询,该查询将返回一个新的过滤游标:

public class MyActivity extends ListActivity implements FilterQueryProvider {

    private Cursor cursor;

    @Override
    public Cursor runQuery(CharSequence constraint) {
        if(cursor != null) {
            cursor.close();
        }
        cursor = somehowGetAFilteredCursorFor(constraint);
        startManagingCursor(cursor);
        return cursor;
    }

}

于 2010-04-28T00:19:09.760 回答