Android:过滤 SimpleCursorAdapter ListView

标签 android sqlite android-cursor android-cursoradapter

现在,我在尝试在我的自定义 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/

相关文章:

java - BitmapFactory解码()的Android位图是否包含透明信息?

java - 如何将 Facebook 登录和电子邮件注册添加到我的 Google Cloud Endpoints 应用程序 (Java)?

android.database.CursorWindowAllocationException : Cursor window allocation of 2048 kb failed even after closing cursor

android - Branch.io validateReferralCode() 和 applyReferralCode() 之间的区别?

java - 安卓 Volley : Supported status codes issue

sqlite - 为什么我的 sqlite 调用同时在不同的线程上?

python - 在 Python 的 sqlite 表中创建自定义列名

java - SQLite异常: No such table even if there is table

android - 使用游标在sqlite中检索具有列值的列名

android - 带有 AlphabetIndexer 的 gridview