【问题标题】:Retrieve CursorAdapter with activeAndroid and SearchView使用 activeAndroid 和 SearchView 检索 CursorAdapter
【发布时间】:2015-12-10 18:45:06
【问题描述】:

我尝试在我的工具栏中实现一个“android.support.v7.widget.SearchView”,它应该向用户提供一些建议。

我希望activeAndroid 可以为我提供一种直接从我的查询中检索 CursorAdapter 的方法(基本上是一个 getAll())。

following link 似乎已被弃用,因为 .toSql() 需要私有访问且“缓存”未解决。

有什么想法吗?

【问题讨论】:

  • 问题是你没有显示输入的搜索文本和执行的查询之间有任何联系

标签: android searchview android-cursoradapter


【解决方案1】:

您可以使用以下方法通过 ActiveAndroid 创建光标:

Cursor cursor = ActiveAndroid.getDatabase().rawQuery("SELECT * FROM TABLE", null);

您需要自己构建的 CursorAdapter 但非常简单,您提供的链接的“定义适配器”部分应该会为您提供入门所需的内容。

【讨论】:

    【解决方案2】:

    请注意,ActiveAndroid 3.1.0 确实将 .toSql() 显示为公开的。

    您需要做的一件事是确保您的 ActiveAndroid 数据库模型包含预期的 _id 列,而 ActiveAndroid 默认情况下不存在该列。您需要卸载应用程序或执行数据库迁移以查看对底层数据库模型的更改。否则你可能会得到这个错误

    java.lang.IllegalArgumentException: column '_id' does not exist
    

    包括 ActiveAndroid 默认不存在的预期“_id”列:

    @Table(name = "Items", id = BaseColumns._ID)
    

    像这样请求光标:

    public Cursor getCursor() {
        String sql = new Select()
                .from(Item.class)
                .toSql();
        String[] params = null;
        Cursor cursor = Cache.openDatabase().rawQuery(sql, params);
        return cursor;
    }
    

    然后你可以像这样创建一个适配器:

    ListAdapter adapter = new SimpleCursorAdapter(context,
            android.R.layout.simple_list_item_1,
            c, new String[] {"Name"}, new int[] { android.R.id.text1}
    );
    

    【讨论】:

    • 事件如果两者都很好,最后这似乎是最好的解决方案,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    相关资源
    最近更新 更多