异步加载内容时闪烁

时间:2013-01-28 21:10:04

标签: java android asynchronous android-listview android-asynctask

我以SQLiteDatabase异步加载我的内容,该内容从ListView查询。我使用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();
        }
    }
}
但是,这并不是什么大不了的事。 但是,有一个小问题,内容没有立即加载,导致闪烁,我觉得非常难看。 我不知道如何“修复”,希望你能帮助我。非常感谢!

1 个答案:

答案 0 :(得分:2)

我希望你现在正在添加适配器中的所有项目,然后在最后执行notifydatasetchanged()。在整个适配器填满后,UI会更新。

仅在你的doQuery()函数中,你应该在适配器中添加项目,然后为每个项目调用前10项(可见项目)的notifydatasetchanged()(在可见项目之后,请在添加整个列表后调用notifydatasetchanged()) 。

这将为UI提供您想要的流畅感觉。希望它有所帮助。