亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

【Android游戲開發二十三】自定義ListView【通

系統 1815 0



Himi原創,轉載務必注明出處!

原文地址: http://blog.csdn.net/xiaominghimi/archive/2011/04/11/6314704.aspx



ListView :在Android應用開發過程中屬于最常用的系統組件之一,當然可能童鞋們問為什么會突然游戲開發中講這個,呵呵,其實在游戲開發中,也會常常使用到系統組件,比如游戲排行榜,簡單的游戲關卡選擇等等,都可以來使用ListView來實現;

當然關于ListView我想大家都會使用了,那么這篇文章也不是跟大家講解ListView是如果使用的,而是如何實現自定義一個【通用】適配器類;

在ListView三種適配器當中,最受大家青睞的肯定就是SimpleAdapter適配器,用過的童鞋們都很清楚,它的擴展性很強,可以將ListView中每一項都使用自定義布局,插入N多組件;但是SimpleAdapter也有弱點,那就是當ListView中每一項有Button、CheckBox等這些有事件的組件,我們想監聽它們就必須自定義適配器!那么今天的重點也就是來講解一下如何寫一個自定義通用適配器類!

SimpleAdapter 構造的時候,我們知道需要五個參數來進行映射數據到ListView中,那么我們今天的自定義通用適配器其實也就是實現系統SimpleAdapter的一個自定義版;

OK,可能我說這么多,大家還是不太懂,其實今天要講述的自定義通用適配器優點有三點:

1.使用通用適配器就不需要每次使用自定義適配器的時候,都要去重新去寫一個,太累。。。。

2.構造方法與SimpleAdapter構造方法相同,五個參數也一摸一樣!

3.只需要在自定義的適配器類中,將我們需要監聽的組件進行設置監聽即可!別的代碼不需要去改動!


例如我們需要完成下圖這種ListView:

(圖1)

【Android游戲開發二十三】自定義ListView【通用】適配器并實現監聽控件!


首先我們來完成ListView中每項的布局:

main.xml:


修改源碼:MainActivity.java:

到此,我們之前要求完成的(圖1)要求的ListView,[對ListView不太熟悉的童鞋自行百度google先學習一下基礎吧]

當然這里我們只是完成了界面,如果想監聽(圖1)中的按鈕和復選框事件,那么我們肯定需要自定義一個適配器,那么下面開始介紹如何實現通用適配器:

創建一個新類,類名:“MySimpleAdapter.java”繼承BaseAdapter:


備注1:這個For循環中是對ListView中每一項中包含所有的組件進行判定每個組件的類型,從而去設置其數據!

其中 《instanceof》這個關鍵字可能有的童鞋不太熟習,這個是對Object 類型的判斷;

這里我只是對ImageView、TextView的類型進行的數據識別,為什么我這里只寫了這兩種,那是因為Button、CheckBox等這些帶事件響應的組件是無法通過適配器映射到ListView上的;


其實關于適配器映射的機制,這里簡單說下:例如一個TextView組件,那么在ListView的每一項(List)中put()添加的時候,put()方法中第一個參數key大家知道是用于與適配器進行對應映射數據用的值,那么第二個參數其實就是put進組件的數據;其實當其數據反射在ListViw時,其實內部就是對組件進行實例化,并且對組件設置數據;



備注2 :我這里最后還有一個else{...}這里是留給童鞋們去擴展的,因為可能還有一些其他能映射的組件,所以這里留下接口,供大家擴展;


備注3:addListener(View convertView)這是我留出來的方法,童鞋們只需要將需要設置監聽事件的組件寫在這方法里就可以啦!


那么看一下我們使用通用監聽器的效果吧:


【Android游戲開發二十三】自定義ListView【通用】適配器并實現監聽控件! 【Android游戲開發二十三】自定義ListView【通用】適配器并實現監聽控件!


OK,很正常!那么在來看看使用系統的SimpleAdapter 與我們自定義的MySimpleAdapter代碼對比圖:


【Android游戲開發二十三】自定義ListView【通用】適配器并實現監聽控件!

怎么樣!構造參數完全一樣,而且我們這個比它強大,我們只要去設置下需要監聽的組件監聽代碼就OK了。

娃哈哈,好啦,今天就到這里吧,希望此通用適配器對大家有用!

補充:大家使用自定義適配器的時候,有時候ListView每一項的焦點沒有了,比如本文中是因為Button和CheckBox截獲了焦點,童鞋們只要將button和checkBox的焦點設置不可見就OK啦。~

xml中focusable是這個屬性; android:focusable="false"

這里也提醒一下開發游戲的童鞋們,很多游戲開發者認為開發游戲不用去學習系統組件的使用,不用去沾染xml、布局啥的,其實這么想的童鞋們你們就大錯特錯了,Android之所以能這么火,其組件的美觀占了很重的份量,這么美的組件不用豈不是很浪費!!希望童鞋們對組件不熟悉的游戲開發者都要去學習學習下組件的使用!


源碼下載: http://download.csdn.net/source/3157277





【Android游戲開發二十三】自定義ListView【通用】適配器并實現監聽控件!


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 一本毛片 | 综合色久 | 狠狠色狠狠色综合系列 | 色久综合网 | 曰曰鲁夜夜免费播放视频 | 精品国产香蕉 | 中文字幕免费在线看线人动作大片 | 欧美日韩一区二区不卡三区 | 一本大道香蕉大在线最新 | 日本玖玖 | 午夜久久久 | 国产一区二区精品久久 | 欧美精品专区第1页 | 日韩欧美在线观看成人 | 五月婷中文字幕 | 男人的天堂222eee | 婷婷综合五月中文字幕欧美 | 五月激激 | 中文字幕一区久久久久 | 国产成人毛片亚洲精品不卡 | 日本在线视频毛片 | a级无毛片 | 日本免费黄色小视频 | 免费亚洲成人 | 美女福利在线观看 | 国产一区二区三区在线观看免费 | 九九这里有精品 | 久草在线观看首页 | 精品久久久久久亚洲精品 | 拍拍拍精品视频在线观看 | 特黄特黄aaaa级毛片免费看 | 国产成人aa在线观看视频 | 搞逼综合网 | 在线精品中文字幕福利视频 | 一级毛片一级毛片 | 久久88色综合色鬼 | 久久天天丁香婷婷中文字幕 | 99久久综合狠狠综合久久 | 国产一区二区三区久久精品小说 | 亚洲毛片在线看 | 久久女人|