2010-02-27 144 views
7

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

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

但是,我不确定我是否可以直接从runQuery做到这一点,而不扩展我的数据库类,因为我想过滤现有的游标,或者我将不得不在我的数据库类中创建一个新的查询函数,名称列,如果是的话,我将如何在runQuery中使用CharSequence约束参数时创建查询语句?

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

回答

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; 
    } 

}

+0

关闭游标引起奇怪的行为 - 列表视图不会立即过滤,只隐藏软键盘之后。在logcat中也有关于双向和多次关闭游标的警告消息 – vokilam 2011-08-29 06:25:22

相关问题