Android ListView的getview()中重複呼叫(position重複呼叫)
重寫的listview adapter中,在getView()方法中,列印語句時,相同的position列印了多次,修改方法:
將佈局檔案中ListView的高度改為“fill_parent”
原因,參考:http://blog.csdn.net/f8376904110/article/details/6460934
當我們在使用listview的時候。有時候自定義adapter的時候,是不是會發現在getview裡列印日誌的時候,重複呼叫很多次?有時候4次。有的嚴重甚至到10次,當我們在listview中移動的時候。每移動一列都會呼叫很多次,這樣大大影響到效率!其實這和listview本身在android上的機制有關。下面我開始來介紹一下吧:
在佈局,我們只有一個listview的時候。那好。我們把高設定成wrap_content的時候。在listview里載入幾行看看。日誌在getview裡列印一下。是不是重複呼叫了?那這個辦法就好弄了。把高設定成fill_parent就成了。這個時候發現日誌還是重複呼叫?那就要看一下Listview的上一級而已的高是不是也是設定也fill_parent的,如果不是。請改動吧。如果是。。。那我還真沒碰到重複呼叫的!因為測試好幾次了!
如果我們在而已裡不只一個Listview。一個複雜好看的佈局可能有很多。listview在佈局的某個地方。這個時候有時候運氣不好。你會發現你呼叫了很多次getview。我測試的時候。最高230次。。。可想而知。這個速度是相當慢。而且每移動一次就是呼叫這麼多次!對於這樣的情況,在修改佈局的時候,要考慮以下兩點:1.首先考慮需求佈局和效能哪個更重要一點。2.考慮listview周邊哪個佈局控制元件影響到了它!
如果在效能上沒有太大影響,而需求要求必需是那樣的佈局。那就以佈局為主。看看有沒有別的方法來優化一下listview,當然前提是佈局一點都不能調整。如果能調整,佈局沒有太大變動。而listview又能很好的優化。那就當然優化了!當我們優化的時候。首先要看一下有沒有影響到Listview重繪的控制元件,比如。如果它上面和下面都有控制元件。而且高都是wrap_content,那麼你就要設定成fill_parent或者固定高。這樣listview在高上就不會重繪,這是最主要的一點。那左右是不是也有控制元件(一般一個手機頁面用到list的時候不會有這麼多控制元件)?有,那我們就也要調整,那就同高一樣的設定。一定要讓listview是一個固定在那個地方不動的。不然,你就等著讓他重複去呼叫吧!
其實說了這麼多。最主要的還是在我們進行佈局的時候。要巧妙的運用每個控制元件的屬性,以及瞭解控制元件每個的原理。這樣在我們進行UI設計的時候,才能很好的去結合!
相關文章
- 關於ListView的getView方法被多次重複呼叫的問題View
- 解決直播商城原始碼中,getView被重複呼叫原始碼View
- C# 如何重複呼叫父窗體中的子窗體C#
- HTTP呼叫超時咋辦?重複請求又如何?HTTP
- java陣列中重複元素的去重Java陣列
- getView()不復用convertView,ListView即毫無複用!(ListView回收機制)View
- android包重複問題Android
- C# datatable中重複資料去重C#
- android中自定義屬性重複定義Android
- 關於在 Angular 應用裡重複呼叫 RouterModule.forRoot(ROUTES) 的討論Angular
- 查詢Set中重複的元素
- 陣列中重複的數字陣列
- CSS 背景圖片水平重複和垂直重複CSS
- Androidstudio中jar包重複或jar包裡的類重複問題AndroidJAR
- 重複的子字串字串
- 存在重複元素
- javascript去掉陣列中重複的值JavaScript陣列
- JavaScript刪除字串中重複的字元JavaScript字串字元
- 如何刪除ArrayList中的重複元素
- Java 去掉字串中的重複資料Java字串
- 【iOS】category重寫方法的呼叫iOSGo
- CSS設定背景圖片水平重複和垂直重複CSS
- MySQL資料庫行去重複和列去重複MySql資料庫
- dataset 判斷整列是否有重複,找出重複資料
- 如何優雅的編寫Java介面(安全性,可重複呼叫,穩定性,追溯性)Java
- python中列表如何去除重複Python
- JavaScript刪除字串中重複字元JavaScript字串字元
- sqlserver中刪除重複資料SQLServer
- Oracle中刪除表中的重複資料Oracle
- 重複照片清理工具PhotoSweeper X ,如何清理重複圖片
- Oracle查詢重複資料與刪除重複記錄Oracle
- 如何去除 EXCEL 檔案中的重複行Excel
- js 去掉陣列物件中的重複物件JS陣列物件
- 刪除排序陣列中的重複項排序陣列
- js刪除陣列中重複的元素JS陣列
- js刪除陣列中的重複元素JS陣列
- 警惕python中的*重複符(運算子)Python
- Oracle中刪除重複資料的SqlOracleSQL