我有一種方法可以將數據放在非常大的數組中,並在顯示器上顯示一個非常大的表格。桌子太大,屏幕一會兒空白。我可以將顯示方法放入Asynctask中並顯示進度條,直到顯示方法完成?使用AsyncTask顯示大型表格
回答
不,您無法從背景訪問視圖。您可以在後臺線程中將數據加載到數組中(因此它不會在加載過程中阻止UI),然後將此數組用於ListView的適配器。我可以回答你的詳細信息,如果您發佈的代碼
正如Chaosit提到你不能從後臺線程訪問UI。
考慮異步任務加載數據,該表加載到用戶界面的嘗試,以使其逐列。如果你使用的是listView,那麼有些技術可以在不渲染整個表格的情況下添加/編輯單元格。
我使用的相同的技術具有大量需要加以渲染爲所述用戶的PIN的處理時移動所述地圖由1 .I加載它們中的一些,並將其呈現1到用戶界面。
加載數據的體積大,最好的辦法是顯示onPreExecute()
一個ProgressBar
,在doInBackground(...)
加載數據和onPostExecute(Boolean success)
進度條的可見性設置爲GONE
。
另外一個不錯的方式做到這一點是onPreExecute()
顯示Dialog
調用.show()
並關閉它在onPostExecute(Boolean success)
,也許更新的onProgressUpdate(String... message)
對話框消息。
只要記住,你不能更新或更改doInBackground(...)
你的用戶界面,但你可以在onPreExecute()
,onPostExecute(Boolean success)
和onProgressUpdate(String... message)
。
如果數據是從數據庫中來(或從遠程源),那麼可以考慮使用裝載機/ CursorAdapter的 - 打造你的ListView。這是加載數據的一種非常有效的方式。
如果你從文件中讀取數據陣列然後嘗試打破數據 - 和公正的選擇,你在屏幕上顯示,而不是從文件中讀取的所有數據中的數據,並嘗試呈現不會顯示的項目 - 然後您可以使用AsyncTask或線程(和處理程序)來更新您的表格。
正如其他人所說,只有主線程可以更新UI。
當然不是所有的數據都一次顯示! 查看Loaders指南。它將允許您加載大型數據集,並僅顯示其中的一部分,從而減少加載時間。
說可以使用的AsyncTask作爲
class TestAsync extends AsyncTask<Void, Integer, String>
{
protected void onPreExecute()
{
//Start showing progress bar here ...
}
protected String doInBackground(Void...arg0)
{
// Do long running operation here ...
return "You are at PostExecute";
}
protected void onPostExecute(String result)
{
// Start displaying data in your table view and dismiss the progress bar
}
}
這樣稱呼它在你的活動來實現的功能:
new TestAsync().execute();
- 1. 在iPhone上顯示大型表格
- 2. 如何使用JQuery Mobile顯示大型表格?
- 3. 使用HTML顯示錶格
- 4. 使用PInvoke顯示錶格
- 5. 使用顯示器:顯示器中的表格:表格列?
- 6. 使用ActiveModel在視圖中顯示無表格模型:模型
- 7. 顯示格式爲HTML的大型JLIST
- 8. 使用iPhone SDK顯示大型PDF
- 9. 如何使用表格顯示網格
- 10. 無法使用AsyncTask顯示ProgressDialog
- 11. 使用AsyncTask在ListView中顯示數據
- 12. 使用Asynctask顯示進度條
- 13. 使用AsyncTask隱藏/顯示ProgressBar
- 14. 無法顯示使用Asynctask在android
- 15. 使用AsyncTask無法顯示ProgessDialog
- 16. 使用AsyncTask顯示循環ProgressBar
- 17. 位圖不顯示使用lrucache和asynctask
- 18. 尋找很好的Javascript/jQuery代碼來顯示大型表格
- 19. ReportLab的LongTable LayoutError:太大我使用LongTables顯示錶格數據
- 20. 顯示使用javascript的零件的大表格
- 21. 使用Qt表格顯示大數據查看
- 22. 使用角度和MVC顯示大型數據表
- 23. 顯示:表格和最大屬性
- 24. Div vs表顯示大型數據集
- 25. 如何使用AsyncTask將json數組顯示到列表視圖?
- 26. AsyncTask顯示響應表單WCF
- 27. 使用Perl顯示錶格CGI
- 28. 使用ajax顯示html表格
- 29. 使用LINQ顯示相關表格
- 30. 使用字符串顯示錶格
您可以發佈您的代碼顯示?你在使用ListView嗎? – Chaosit
現在無法訪問我的代碼,但是,我沒有使用ListView。我正在使用tableView。也許我需要使用scrollView的懶惰顯示。 –