现在,我在尝试在我的自定义 SimpleCursorAdapter 中实现 FilterQueryProvider 时遇到了问题,因为我不确定在 FilterQueryProvider 的 runQuery 函数中要做什么。
换句话说,由于构成我的 ListView 的查询基本上是从我的数据库表中获取行 ID、名称和第三列,因此我希望能够根据名称列的部分值过滤游标。
但是,我不确定我是否可以直接从 runQuery 执行此操作而不扩展我的数据库类,因为我想过滤现有的游标,或者我是否必须在我的数据库类中创建一个新的查询函数来部分搜索我的名字列,如果是,我将如何在 runQuery 中使用 CharSequence 约束参数时创建查询语句?
我还担心与尝试基于部分文本运行多个查询相关的性能问题,因为所讨论的数据库表大约有 1300-1400 行。换句话说,我会在尝试过滤游标时遇到瓶颈吗?
最佳答案
您需要运行一个将返回新过滤游标的查询:
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;
}
关于Android:过滤 SimpleCursorAdapter ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2348585/