显示大表而不会阻塞UI线程

时间:2011-07-06 13:14:35

标签: android android-asynctask tablelayout

我有一张表,我想要显示大约1k行。这个任务显然会阻塞UI线程,导致黑屏,而onCreate()构建表。

我通过使用AsyncTask解决了这个问题,AsyncTask在“doInBackground”函数中构建了想要的TableLayout并将其显示在“onPostExecute”函数中。

问题#1: 有什么更好的练习我不熟悉吗?

问题#2: 我的(简化)“doInBackground”函数如下所示:

protected Void doInBackground(Void... v) {

        tmpTableLayout = populateTable("");
        return null;
    }

我的(简化)“onPostExecute”函数如下所示:

protected void onPostExecute(Void v) {

        TableLayout ct = (TableLayout)findViewById(R.id.RealTable);
        ct.removeAllViews();
        /* WHATS HERE? */
    }

我应该写什么而不是“这里有什么?”在最后一行代码中,为了在“ct”中显示“tmpTableLayout”的内容?

提前致谢!

2 个答案:

答案 0 :(得分:2)

您确定要一次性显示所有内容吗?

一种方法是在用户向下滚动时动态加载更多行。因此,有一个滚动侦听器,用于检查用户是否正在接近显示的内容的末尾,从而启动AsyncTask或加载更多内容的线程。

实施例: Android List Activity with dynamically loaded images form the web in android

答案 1 :(得分:0)

我可能会使用ListViewCursorAdapter让Android管理为您提取数据。请参阅接受的答案here