【问题标题】:Android: Filtering a SimpleCursorAdapter ListViewAndroid:过滤 SimpleCursorAdapter ListView
【发布时间】:2010-02-27 19:14:45
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: android sqlite android-cursor android-cursoradapter


    【解决方案1】:

    您需要运行一个返回新过滤光标的查询:

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

    }

    【讨论】:

    • 关闭光标会导致奇怪的行为 - listview 不会立即过滤,仅在隐藏软键盘后。在 logcat 中也有关于两次和更多次关闭游标的警告消息
    猜你喜欢
    • 2011-07-10
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多