首頁 > Java > java教程 > 為什麼我的自訂 ListView 適配器的'getView”方法被多次呼叫?

為什麼我的自訂 ListView 適配器的'getView”方法被多次呼叫?

Linda Hamilton
發布: 2024-12-25 09:10:30
原創
797 人瀏覽過

Why Does My Custom ListView Adapter's `getView` Method Get Called Multiple Times?

自訂ListView 適配器'getView' 方法呼叫

在自訂ListView 適配器中,'getView' 方法確實可以在看似隨機的順序。此行為歸因於 ListView 初始化其佈局的方式。

當 ListView 最初填充資料時,它會根據從適配器測量的一些子項來估計其大小。這樣做是為了優化滾動性能。在您的情況下,ListView 已指派了wrap_content 高度。因此,它會測量您孩子的子集以確定其首選身高。

此測量過程會導致「getView」方法在任何使用者互動之前被多次呼叫。當列表項被重複使用時,convertViews 將傳遞到「getView」以提高效能。但是,呼叫 'getView' 的順序和呼叫次數無法保證。

多次呼叫'getView' 的原因

  • 預佈局初始化: ListView 需要確定其高度,因此測量一些
  • 變數視圖可見度:您觀察到的位置值可能是由於ListView 回收視圖並測量其他子視圖以考慮潛在的滾動這一事實所造成的。
  • 資料修改:如果ListView關聯的資料發生變化,可能會呼叫getView()來反映

高效「getView」實現的技巧

  • 避免在「getView」中執行昂貴的操作,因為它會減慢ListView 滾動速度。
  • 考慮使用 ViewHolder 模式透過快取視圖來提高效能
  • 確保您的適配器將資料變更通知 ListView,以防止不必要的 getView() 呼叫。

以上是為什麼我的自訂 ListView 適配器的'getView”方法被多次呼叫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板