2018-03-26—ExpandableListView優(yōu)化使用(數(shù)據(jù)為Map嵌套List格式)

上一次我們學(xué)會了使用ListView以及對它進行優(yōu)化啊送,那么今天我們來學(xué)一下跟ListView特別像的一個控件,ExpandableListView帽芽。

跟ExpandableListView跟ListView名字就很像删掀,多了一個Expand,是可拉伸的意思导街。ListView是一個一級列表,他是一個二級列表纤子,話不多說搬瑰,我們來看一下他的效果:


首先顯示第幾組是一級列表,點開以后是里面的數(shù)據(jù)控硼,也就是二級列表≡舐郏現(xiàn)在大家應(yīng)該知道這個是什么意思了吧。

因為ExpandableListView和ListView太像了卡乾,所以就不一步一步地跟大家做了翼悴,我說一下流程和幾個關(guān)鍵的步驟:

1.在.xml文件中添加一個標(biāo)簽<ExpandableListView,然后給上Id

2.在Activiy中創(chuàng)建ExpandableListView對象幔妨,通過findViewById查找到對應(yīng)控件鹦赎。

3.創(chuàng)建數(shù)據(jù)(是ExpandableListView的適配器接收的數(shù)據(jù)),一般來說我們用Map嵌套List的數(shù)據(jù)類型作為適配器的數(shù)據(jù)误堡。

4.創(chuàng)建適配器類古话,注意我們ExpandableListView的適配器所繼承的類不是BaseAdapter,而是BaseExpandableListAdapter锁施,

隨后在里面實現(xiàn)方法陪踩。但是我們會發(fā)現(xiàn)杖们,這個適配器實現(xiàn)的方法遠遠比BaseAdapter實現(xiàn)的方法要多得多,我們來一個一個看一下:


首先這兩個分別是獲取到組的個數(shù)(就像上面我們看到的一共有多少個一級列表)肩狂,和獲取到某個組的子選項的個數(shù)(某個一級列表有多少個數(shù)據(jù))摘完。


這兩個是獲取我們的某一個組條目和獲取某一個子條目,


這兩個是獲取組的Id和獲取某一組的子條目的Id


這個方法我們暫時不說傻谁,因為使用的話暫時不用了解孝治,等以后分析ExpandableListView的時候再說。


這個方法是我們的子條目是否可點擊栅螟,如果返回false荆秦,則無法點擊,就是子條目的點擊事件無法被調(diào)用力图,返回true則恰恰相反步绸。

而我們今天主要看的、主要寫的就是這兩個方法:獲取組視圖和獲取某一個組視圖的子視圖吃媒。

現(xiàn)在我們來簡單實現(xiàn)一下瓤介。

由于我們把Adapter接收的數(shù)據(jù)源類型設(shè)置為Map嵌套List,所以我們要在構(gòu)造器(Adapter)里面創(chuàng)建一個Map類型對象來接收數(shù)據(jù)赘那。當(dāng)然還不能少了一個很重要的屬性:上下文(Context)


沒問題對吧刑桑,現(xiàn)在我們來想一個問題:我們接收的數(shù)據(jù)類型為Map嵌套List,也就是說我們把Map的Key值當(dāng)成一級列表的名字募舟,把每個Key儲存的value(List類型)當(dāng)做二級列表祠斧。這個應(yīng)該可以理解吧。

但是我們都知道HaspMap是無序的拱礁,我們上面的各種方法的參數(shù)大多數(shù)都是position琢锋,也就是坐標(biāo),但是對于一個無序的Map是無法通過position來找到對應(yīng)的value呢灶。所以在這之前我們要先做一點手腳:我們在適配器里面再創(chuàng)建一個List對象矩欠,用來存儲 把Map的key值轉(zhuǎn)化為的List应又。這樣我們就可以通過List蜕煌,得到對應(yīng)position的key值玄呛,進而得到二級列表。我們來演示一下缨睡。


我們在適配器中添加了一個用于存儲key的list鸟悴,至于這個list的數(shù)據(jù),我們在Activity中給它傳入就好宏蛉。(這個我們等會兒在寫)遣臼。


在getGroupCount方法中,我們傳入了map的size拾并,這個大家都能看懂揍堰。

在getChildrenCount方法中鹏浅,我們傳入通過keyList和groupPosition得到了對應(yīng)位置的key值,然后得到了對應(yīng)的value(List類型)屏歹,最后得到了list的size隐砸。

這兩個方法跟上面的兩個很像,大家應(yīng)該可以看懂蝙眶。


傳入Id的方法季希,還是跟BaseAdapter一樣,吧對應(yīng)的參數(shù)返回就好幽纷。下面我們來看一看最重要的兩個方法:大家還記得我們當(dāng)時是怎么優(yōu)化BaseAdapter的嗎式塌,我們創(chuàng)建了一個ViewHolder的對象用來接收已經(jīng)加載過的布局的控件,而這里我們是有二級列表友浸,所以我們需要兩個ViewHolder峰尝。

我們使用的是最簡單的數(shù)據(jù)類型,所以直接就是兩個TextView收恢。


跟BaseAdapter一樣的邏輯武学,只是大家注意我們在給tv.setText時傳入了key值。


我們在childholder傳入值時候伦意,首先通過keyList獲取了map的key值火窒,然后獲取了子條目。

好了驮肉,現(xiàn)在我們的適配器就配置完了熏矿,下面我們來寫我們的Activity界面。

init為初始化方法离钝,bean為假數(shù)據(jù)添加方法曲掰。

KeyList為把key存入到List中的方法。

最后我們來看一下效果:


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末奈辰,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子乱豆,更是在濱河造成了極大的恐慌奖恰,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宛裕,死亡現(xiàn)場離奇詭異瑟啃,居然都是意外死亡,警方通過查閱死者的電腦和手機揩尸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進店門蛹屿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人岩榆,你說我怎么就攤上這事错负》仄埃” “怎么了?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵犹撒,是天一觀的道長折联。 經(jīng)常有香客問我,道長识颊,這世上最難降的妖魔是什么诚镰? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮祥款,結(jié)果婚禮上清笨,老公的妹妹穿的比我還像新娘。我一直安慰自己刃跛,他們只是感情好抠艾,可當(dāng)我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著奠伪,像睡著了一般跌帐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绊率,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天谨敛,我揣著相機與錄音,去河邊找鬼滤否。 笑死脸狸,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的藐俺。 我是一名探鬼主播炊甲,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼欲芹!你這毒婦竟也來了卿啡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤菱父,失蹤者是張志新(化名)和其女友劉穎颈娜,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體浙宜,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡官辽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了粟瞬。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片同仆。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖裙品,靈堂內(nèi)的尸體忽然破棺而出俗批,到底是詐尸還是另有隱情俗或,我是刑警寧澤,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布扶镀,位于F島的核電站蕴侣,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏臭觉。R本人自食惡果不足惜昆雀,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蝠筑。 院中可真熱鬧狞膘,春花似錦、人聲如沸什乙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽臣镣。三九已至辅愿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間忆某,已是汗流浹背点待。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留弃舒,地道東北人癞埠。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像聋呢,于是被迫代替她去往敵國和親苗踪。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,665評論 2 354

推薦閱讀更多精彩內(nèi)容