首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用cursor.respond(包)和cursor.getextras()

使用cursor.respond(包)和cursor.getextras()
EN

Stack Overflow用户
提问于 2012-06-13 08:01:10
回答 4查看 3.1K关注 0票数 3

我在一个SQLite数据库中有两个来自不同表的游标。我尝试将来自两个游标的数据放入一个ListView中,但每个游标的数据格式不同。

我所考虑的是使用MergeCursor来组合这两个游标,但是我的SimpleCursorAdapterViewBinder将把它们看作一个单一的游标,并且不能区分格式(除非我改变我的表,我不想这样做)。

最后,我发现了两个名为Cursor.repond(Bundle) & Cursor.getExtras()的方法,但是开发人员控制台上的文档非常简短,谷歌搜索这些方法并没有阐明它们的用法。

我测试了在数据库类中使用resond()进行查询的想法:

代码语言:javascript
复制
    extr.putString("table", the_tab);
    Cursor c_in = db.rawQuery(qry, null);
    c_in.respond(extr);
    return c_in;

并使用ViewBinder中的getExtras()来了解查询的表,并相应地格式化ListView项:

代码语言:javascript
复制
Bundle extr=cur.getExtras();
String tab= extr.getString("table");

但是我总是得到一个例外,tabnull

在冗长的描述之后,我的问题是:我是否正确地使用了respondgetExtras方法?如果没有,有没有更好的方法来解决我的问题?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-06-15 12:44:58

尝试将表名构建为两个SELECT中的字段。

代码语言:javascript
复制
SELECT "A", * from tableA;  SELECT "B", * from tableB;

然后计算合并的游标。或者,

代码语言:javascript
复制
SELECT "A", * from tableA UNION ALL SELECT "B", * from tableB;

现在,游标的每一行在第一列中都有一个"A",如果它来自tableA,则在第一列中有一个"B";如果它来自tableB,则在第一列中有一个from。因此,可以很容易地在ViewBinder中查看该列来制定格式决定。

票数 2
EN

Stack Overflow用户

发布于 2013-09-05 23:59:18

如果你想在getExtras中使用Bundle,似乎是由AbstractWindowedCursor扩展的AbstractCursor,由SQLiteCursor扩展的AbstractCursor定义了一个setExtras方法。它的文档如下所示

设置将由getExtras()返回的android.os.Bundle。null将被转换为android.os.Bundle.EMPTY。

根据文档,respond用于与Cursor进行带外通信。

所以答案是:

代码语言:javascript
复制
((AbstractCursor) cursor).setExtras(bundle);

然后,您应该能够调用

代码语言:javascript
复制
cursor.getExtras();

以在以后检索该Bundle

编辑:

进一步看,由于某种原因,setExtras似乎被标记为隐藏,因此它是公开的,并且打算按照描述(和期望的)使用。请参阅ContactsProvider2 example

因此,我想到了使用CursorWrapper,并覆盖那里的getExtras来提供Bundle。在我的例子中,我在CursorWrapper中创建了Bundle,所以我不需要一个方法来设置它。

代码语言:javascript
复制
@Override
public Bundle getExtras() {
    return _meta_data;
}
票数 2
EN

Stack Overflow用户

发布于 2012-06-15 13:03:28

我坚持让你看看MergeCursorAbstractCursor来解决你的问题并得到解决方案。例如,您可以选中this answer。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11006511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档