2012-11-06 47 views
0

我搜索了幾個小時,但沒有找到適合我的解決方案。 我想要做什麼:在我的ListFragment中,我使用onListItemClick(...)方法來處理點擊事件。在這裏,我改變了行項目的背景。但不幸的是,每次調用onListItemClick(...)時,都會調用適配器的getView(),並更新所有8個可見的行項目。這需要很長時間:0.5秒。因爲行佈局非常複雜(2個圖像,8個TextViews)。 所以我想只更新被點擊的行。我想要使​​用this solution,但是當無論如何更新其他7個行項目時,這不起作用。 我已經按照these advices的速度加快了列表速度,但速度仍然很慢。Android:避免來自適配器中的getView()的不需要的呼叫

任何幫助,想法和想法表示讚賞。 :) 謝謝!

[編輯]

感謝CommensWare給我一些新的想法。我現在所做的是檢查traceview所說的內容。結果是,延遲分爲兩部分。延遲的第一個300毫秒採用超過22.000次調用的「FastXMLSerialzier.escapeAndAppendString()」。這似乎很多!在下半年,很多或許都是onMeasure() - 調用視圖和佈局的方法。

我試過的: 我在適配器中填充了每個帶有靜態虛擬值的文本視圖,並通過加載圖像排除了該部分。它不會改變,traceview顯示相同的圖片。 在第二次嘗試中,我查看了列表項的LinearLayout,並用「match_parent」替換了我找到的每個「wrap_content」 - 什麼也沒有。還是一樣。

我對你的想法和提示仍然開放。 :)

+0

您是否在每次getView被調用時都膨脹視圖,或者您是否將視圖作爲參數傳遞給getView? – Marcelo

+0

我正在使用convertView來避免新的膨脹視圖,就像它在我的問題的第一個鏈接中提到的那樣。 – rxDroid

回答

0

您無法控制調用getView()的時間和頻率。

如果真的需要500ms生成8行Views,那麼代碼有問題。您可以使用Traceview來確定您在哪裏花時間,因此您可以嘗試改進性能(例如緩存)。

相關問題