我的书"Hello Android“提供了一种使用自定义数据库助手,设置光标,然后设置适配器的方法,如下所示:
Cursor cursor
CustomDatabaseHelper test = new CustomDatabaseHelper(this);
try {
cursor = getData();
showData(cursor);
} finally {
test.close();
}
但是,每次我需要刷新数据集时,我都需要继续运行这段代码(由于" this“不可用,这在按钮的onClick()中变得有点困难。
这是刷新数据集的最佳方法吗?还是应该删除.close并发出adapter.notifyDataSetChanged()?如果我这样做,有时我会得到一个强制关闭(我现在记不清了),但有时它不能正确删除-我认为这可能是因为数据库当前是打开的,它试图再次打开。
我们是否也应该在类中(在OnCreate之外)声明游标、DatabaseHelpers和Adapter的变量,以便所有函数都可以访问它们?
我意识到在这个阶段这只是糟糕的编程,但我正在尝试获得一些关于做事情的最佳方法的指点。
发布于 2010-11-16 20:54:23
您应该使用adapter.notifyDataSetChanged()
。当您使用该日志时,日志会显示什么内容?
发布于 2011-09-14 21:23:06
只需在设置Adapter
之前添加以下代码,它对我来说是有效的:
listView.destroyDrawingCache();
listView.setVisibility(ListView.INVISIBLE);
listView.setVisibility(ListView.VISIBLE);
或者在更改数据资源后直接使用下面的方法。
adapter.notifyDataSetChanged()
发布于 2010-12-04 02:00:27
下面的代码非常适合我
EfficientAdapter adp = (EfficientAdapter) QuickList.getAdapter();
adp.UpdateDataList(EfficientAdapter.MY_DATA);
adp.notifyDataSetChanged();
QuickList.invalidateViews();
QuickList.scrollBy(0, 0);
https://stackoverflow.com/questions/4194124
复制相似问题