Sim*_*mon 71 android listview refresh
我的书"Hello Android"将此作为一种使用自定义db帮助程序,设置游标,然后按如下方式设置适配器的方法:
Cursor cursor
CustomDatabaseHelper test = new CustomDatabaseHelper(this);
try {
cursor = getData();
showData(cursor);
} finally {
test.close();
}
Run Code Online (Sandbox Code Playgroud)
但是,每当我需要刷新数据集时,我需要继续运行这段代码(由于"this"不可用,因此在按钮的onClick()中会有点困难.
这是刷新数据集的最佳方法,还是应该删除.close并发出adapter.notifyDataSetChanged()?如果我这样做,有时我会得到一个强制关闭(我现在不记得)但有时它无法正确删除 - 我想这可能是因为数据库当前是打开的并且它试图再次打开.
我们是否还要在Class中(在OnCreate之外)声明Cursors,DatabaseHelpers和Adapter的变量,以便所有函数都可以访问它们?
我意识到这只是在这个阶段的糟糕编程,但我试图得到一些关于最佳做事方式的指示.
小智 16
只需在设置Adapter它之前添加这些代码:
listView.destroyDrawingCache();
listView.setVisibility(ListView.INVISIBLE);
listView.setVisibility(ListView.VISIBLE);
Run Code Online (Sandbox Code Playgroud)
或者直接在更改数据资源后可以使用以下方法.
adapter.notifyDataSetChanged()
Run Code Online (Sandbox Code Playgroud)
Jor*_*sys 13
在Android上刷新Adapter/ListView的最佳方法
不仅调用notifyDataSetChanged()将刷新ListView数据,setAdapter()必须先调用才能正确加载信息:
listView.setAdapter(adapter);
adapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)
Him*_*ims 12
以下代码适合我
EfficientAdapter adp = (EfficientAdapter) QuickList.getAdapter();
adp.UpdateDataList(EfficientAdapter.MY_DATA);
adp.notifyDataSetChanged();
QuickList.invalidateViews();
QuickList.scrollBy(0, 0);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
145009 次 |
| 最近记录: |