我在 ListView
中异步加载从 SQLiteDatabase
查询的内容。我使用 AsyncTask
,它基本上如下所示:
private final class QueryTask extends AsyncTask<Boolean, Void, Boolean> {
@Override
protected Boolean doInBackground(Boolean... params) {
doQuery();
if (querySuccessfull) {
return true;
} else {
return false;
}
}
@Override
protected void onPostExecute(Boolean boo) {
if (boo) {
setAdapterToListView();
} else {
loadEmptyView();
}
}
}
不过,这没什么大不了的。 但是,有一个小问题,内容不会立即加载,这会导致闪烁,我认为这非常难看。 我不知道如何“修复”,希望你能帮助我。非常感谢!
最佳答案
我希望您目前正在将所有项目添加到适配器中,然后在最后执行notifydatasetchanged()。因此,在整个适配器填满后,UI 会更新。
仅在 doQuery() 函数中,您应该在适配器中添加项目,然后为前 10 个项目(可见项目)的每个项目调用 notificationdatasetchanged() (在添加整个列表后,在可见项目之后,请调用 notificationdatasetchanged()) 。
这将为 UI 带来您想要的流畅感觉。希望对您有所帮助。
关于java - 异步加载内容时闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14571313/