首頁 收藏 QQ群
 網(wǎng)站導(dǎo)航

ZNDS智能電視網(wǎng) 推薦當(dāng)貝市場(chǎng)

TV應(yīng)用下載 / 資源分享區(qū)

軟件下載 | 游戲 | 討論 | 電視計(jì)算器

綜合交流 / 評(píng)測(cè) / 活動(dòng)區(qū)

交流區(qū) | 測(cè)硬件 | 網(wǎng)站活動(dòng) | Z幣中心

新手入門 / 進(jìn)階 / 社區(qū)互助

新手 | 你問我答 | 免費(fèi)刷機(jī)救磚 | ROM固件

查看: 11197|回復(fù): 0
上一主題 下一主題
[教程]

listview學(xué)習(xí)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2013-8-28 16:27 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
1在Android的UI組件中,ListView是一個(gè)非常實(shí)用的組件。該組件主要是用于展示大批量的同類數(shù)據(jù),比如聯(lián)系人信息。   
而在自定義ListView的樣式時(shí),需要重寫數(shù)據(jù)接口的ListAdapter類中的getView函數(shù),以此來定制ListView中每個(gè)item的樣式。在這里Android系統(tǒng)為了效率的原因引進(jìn)了ConvertView這一個(gè)變量。ConvertView在這里主要的作用就是方便系統(tǒng)在重寫UI時(shí),能重用原來實(shí)用過的View實(shí)例,以此來降低系統(tǒng)資源的消耗和提高代碼效率。
但是當(dāng)你希望根據(jù)itemid實(shí)現(xiàn)不同的樣式時(shí),往往會(huì)出現(xiàn)一些意想不到的情況。這主要是因?yàn)閮煞矫娴脑驅(qū)е碌?/div>   
Andorid并不保證getView的執(zhí)行順序因?yàn)間etView的不確定性,導(dǎo)致ConvertView的循序可能是無序的。   
   
簡單解釋ConvertView就是最近使用過的getView函數(shù)返回的實(shí)例,但是Andorid是怎樣決定使用那個(gè)實(shí)例傳遞給本次getView函數(shù)的呢?
在經(jīng)過試驗(yàn)后,我發(fā)現(xiàn)關(guān)于ConvertView的幾點(diǎn)特征。
   
對(duì)于一個(gè)ListView,Android保存所有曾經(jīng)生成過的ConvertView實(shí)例,直至系統(tǒng)垃圾回收這些實(shí)例位置,而不是只保存最后使用的ConvertView對(duì)象。這些保存的ConvertView以使用時(shí)間順序排序,并依次被傳遞到getView函數(shù)中。   
以一個(gè)簡單的例子來會(huì)更直觀,   
   
我有一列String需要展示   
view plain view plain view plain view plain view plaincopy   
   
   
Context [] c = {1,2,3.......14,16,15}  Color [] co = {r,w,...........w,w,r}     
   
   
由此可見當(dāng)下次需要調(diào)用多個(gè)convertView時(shí),輸出的顏色順序?qū)?huì)出錯(cuò)。   
   
總結(jié):由于ListView在執(zhí)行時(shí),各種操作需要重寫的item數(shù)是不確定的,同時(shí)getView函數(shù)調(diào)用的順序也是不確定的,這將導(dǎo)致convertView的數(shù)組順序發(fā)生嚴(yán)重的錯(cuò)亂。所以并不建議通過判斷position來實(shí)現(xiàn)不同的樣式,除非不使用convertView   
   
目前避免這種錯(cuò)亂的解決方法,有幾種。   
不使用convertView,直接每次重新實(shí)例化需要的View對(duì)象通過外部的靜態(tài)數(shù)組基于itemid或則position值來保存View的Layout,content及style信息,在每次getView函數(shù)中都重新賦值。   
   
但是上述兩種方法都存在效率損失的問題,目前沒有找到太好的解決方法。   
   
</strong

上一篇:Android軟件開發(fā)之發(fā)送短信與系統(tǒng)短信庫解析(三十)
下一篇:第二十二講:AIDL和遠(yuǎn)程Service調(diào)用

本版積分規(guī)則

Archiver|新帖|標(biāo)簽|軟件|Sitemap|ZNDS智能電視網(wǎng) ( 蘇ICP備2023012627號(hào) )

網(wǎng)絡(luò)信息服務(wù)信用承諾書 | 增值電信業(yè)務(wù)經(jīng)營許可證:蘇B2-20221768 丨 蘇公網(wǎng)安備 32011402011373號(hào)

GMT+8, 2024-10-20 16:06 , Processed in 0.058188 second(s), 13 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報(bào):report#znds.com (請(qǐng)將#替換為@)

© 2007-2024 ZNDS.Com

快速回復(fù) 返回頂部 返回列表