【发布时间】:2011-05-10 19:07:20
【问题描述】:
我的书“Hello Android”提供了一种使用自定义数据库助手、设置光标、然后设置适配器的方法,如下所示:
Cursor cursor
CustomDatabaseHelper test = new CustomDatabaseHelper(this);
try {
cursor = getData();
showData(cursor);
} finally {
test.close();
}
但是,有了这个,每次我需要刷新数据集时,我都需要继续运行这段代码(由于“this”不可用,这在按钮的 onClick() 中变得有点困难。
这是刷新数据集的最佳方式,还是我应该考虑删除 .close 并发出 adapter.notifyDataSetChanged()?如果我这样做,有时我会强制关闭(我现在不记得了)但有时它无法正确删除 - 我认为这可能是因为数据库当前已打开并且它试图再次打开。
我们是否也应该在类中(在 OnCreate 之外)声明 Cursors、DatabaseHelpers 和 Adapter 的变量,以便所有函数都可以访问它们?
我意识到在这个阶段这只是糟糕的编程,但我试图获得一些关于最好的做事方式的指针。
【问题讨论】:
-
只是一个旁注:如果您使用内容提供程序和 LoaderManager,情况会有所不同。见:stackoverflow.com/a/19657500/1087411