2011-03-18 24 views
2

首先:我最近纔開始爲Android開發,因此請不要在我面前炫耀一些愚蠢/明顯的問題! ; DAndroid:構建視圖有很多元素非常慢(10+秒)

我遇到的問題如下:我想顯示未知長度的可點擊項目列表 - 我的示例數據集大約是300. 使用LinearLayout並將它們全部添加爲TextView需要半個第二在模擬器上,這是完全沒問題的。 爲了增強用戶體驗,我現在用相對佈局取代了LinearLayouts,每個佈局都帶有背景圖像,2個TextViews和3個ImageViews。所有圖像都包含在資源中,因此不會浪費時間下載或進行任何操作。

問題是:現在大約需要10秒來建立這個視圖,這顯然沒有可行的解決方案。 我的假設是,完整的用戶界面是完全構建的,儘管只有一部分是可見的(使用一些滾動容器)

因爲我懶得寫邏輯手動確保只有可見部分用戶界面實際上是填充的,我想知道是否有人知道這個問題的一些簡單的標準解決方案。

是否有某種UI代理我只需要激活? 或者你會建議像前10個元素一樣創建屏幕,並在另一個線程中將其他人加載到背景中? (不知道如何滾動容器 - 或在一般情況下的android UI - 會對此作出反應)

感謝您提前提供所有幫助! =)

tl; dr: 建築大觀點方式太慢 - 需要幫助! 小狗的眼睛

回答

4

我想顯示未知長度的可點擊項目列表 - 我的樣本數據集在300

使用ListView,或AdapterView任何其他子類。

我的假設將是完整的UI儘管它是可見的(使用一些滾動容器)

這就是始終只能部分完全建立什麼AdapterView子類,像ListView,是 - 只爲可見的內容創建小部件,而不是整個數據模型。

因爲我懶得編寫邏輯手動確保UI的可見部分實際上是填充的,我想知道是否有人知道這個問題的一些簡單的標準解決方案。

使用ListViewAdapterView的任何其他子類。

是否有某種UI代理我只需要激活?

No.

或者你會推薦創建類似前10個元素的屏幕,並在另一個線程中加載其他元素的背景?

號多半是因爲你會崩潰。您只能從主應用程序線程修改UI,而不是您分叉的後臺線程。

1

顯然馬克的答案是正確的方式和你需要去爲這個特殊的問題。

然而,在未來我建議給文檔快速瀏覽下一次你有一個問題。特別是View documentation通常是我發現新(對我)Android框架功能的指南頁面。

一般來說,如果你需要的東西,並認爲這可能是太多精力的事,但它的很常見,它應該已經被別人做,我建議這些步驟:

  • 打開view docs,然後在「間接子類」下查找您需要的東西。
  • 打開API Demos示例應用程序,看看您是否可以找到您想要實現的內容。它具有相當好的API覆蓋率,您可以在Sample Code部分輕鬆找到代碼。
  • 查看其他示例項目。該目錄中有一些相關的參與者。

當然,Stack Overflow是一個很好的資源,但有時答案是過於具體,不適合自己發現新功能。