【发布时间】:2016-01-10 01:35:12
【问题描述】:
我计划基于Cursor 构建一个Iterator,我将通过数据库查询获得:
@Override public Iterator<Title> iterator() {
final Cursor cursor = /* Gets a Cursor of Titles from DB */;
final Iterator<Title> iterator = new Iterator<Title>() {
@Override public boolean hasNext() {
return !cursor.isLast();
}
@Override public Title next() {
cursor.moveToNext();
return new CursorTitle(cursor);
}
@Override public void remove() {
try {
removeTitle(new CursorTitle(cursor));
} catch (TitleNotFoundException e) {
throw new AssertionError();
}
}
};
cursor.close();
return iterator;
}
但我一直遇到异常,因为我基本上是在尝试从已关闭的 Cursor 获取数据。
我知道我在这里问了一些很奇怪的问题;但我只是好奇。有没有办法让这个工作?
提前致谢。
p.s.,我可能会通过不关闭 Cursor 并收工来逃脱。但是来吧,那太白痴了。
【问题讨论】:
-
你可能想在你的迭代器中添加一个新方法来包装
cursor.close()。并找出你想在光标上调用 close 的时间。 -
嗯.. 这实际上是个好主意!我会尝试一下。
标签: android android-sqlite android-cursor