Android:过滤SimpleCursorAdapter ListView

Die*_*ori 7 sqlite android cursor adapter

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

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

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

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

yan*_*nko 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;
    }
Run Code Online (Sandbox Code Playgroud)

}