使用activeAndroid和SearchView检索游标适配器

使用activeAndroid和SearchView检索游标适配器,android,searchview,android-cursoradapter,Android,Searchview,Android Cursoradapter,我尝试在我的工具栏中实现一个“android.support.v7.widget.SearchView”,它应该为用户提供一些建议 我希望能提供一种直接从查询中检索游标适配器的方法(基本上是getAll()) 似乎已弃用,因为.toSql()需要私有访问,并且“缓存”未解析 有什么想法吗?您可以通过ActiveAndroid使用以下工具创建光标: Cursor Cursor=ActiveAndroid.getDatabase().rawQuery(“从表中选择*”,null) 您需要自己构建游标

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

我希望能提供一种直接从查询中检索游标适配器的方法(基本上是getAll())

似乎已弃用,因为.toSql()需要私有访问,并且“缓存”未解析


有什么想法吗?

您可以通过ActiveAndroid使用以下工具创建光标:

Cursor Cursor=ActiveAndroid.getDatabase().rawQuery(“从表中选择*”,null)


您需要自己构建游标适配器,但它非常简单,您提供的链接中的“定义适配器”部分应该提供您开始使用所需的内容。

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

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

java.lang.IllegalArgumentException: column '_id' does not exist
包括ActiveAndroid默认情况下不存在的预期“\u 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}
);
然后,您可以创建如下适配器:

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

问题是,如果输入的搜索文本和执行的queryEvent都运行良好,那么您不会显示它们之间的任何连接。最后,这似乎是最好的解决方案,谢谢