作者issuemylove (skill)
看板AndroidDev
標題[問題] ExpandableListView 多種 child view
時間Fri Jun 20 10:48:23 2014
想請問各位大大
BaseExpandableListAdapter 的 getChildView(..., View convertView, ...);
因為我有多種 child view的 layout
每種 layout 都依據 group 做分類
switch( groupPosition){
case 0: convertView = new ChildView0(); break;
case 1: convertView = new ChildView1(); break;
case 2: ...........................2.........;
default: break;
}
因為不同 child view的關係
變成說,我每次不能只檢查
if(convertView == null){
「這裡是上面的switch」;
}
else{ }
然後直接assign它的內容,
又因為 convertView 'reuse'的關係
下次我要使用的時候
變成我要先確定 convertView 的 type
以 groupPosition = 0 為例
if(convertView instanceof ChildView0){
「因為型別對了才可以直接使用」
}
else{
「雖然 convertView != null, 但是因為型別不對所以重新new ChildView0」
//這樣就變成完全沒用到 convertView reuse的優點了?
}
抱歉有點難表達
單純就這有甚麼好解法嗎?
謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.21.125.247
※ 文章網址: http://www.ptt.cc/bbs/AndroidDev/M.1403232505.A.DA2.html
→ passli:用一個layout.xml 然後把你全部要的view 都寫進去 06/20 12:23
→ passli:再判斷那一個要show,其他gone掉 06/20 12:24
→ issuemylove:謝謝給的方向! 我試試看 06/20 13:58
→ okskygo:getChildType() and getChildTypeCount() 06/20 14:19
推 jknm0510a:你用polymorphism去解這個問題就一切都解決了 06/20 15:00
推 jknm0510a:converView用父class宣告,再依照不同的new不同的child 06/20 15:01
→ jknm0510a: class 06/20 15:01
→ issuemylove:plymorphism的前提是View內容一樣QQ 我是要有不同的 06/20 15:17
→ issuemylove:view 06/20 15:17
→ issuemylove:然後因為convertview reuse的關係 所以會出錯 06/20 15:18
→ zerofinal:一樓的方法不行嗎!?全部塞在同一個layout 06/20 16:43
→ zerofinal:然後塞值進去adapter, 再改寫adapter讓要顯示的layout 06/20 16:45
→ zerofinal:visible就可以啦 06/20 16:45
→ issuemylove:1F的方法可以^^ 06/20 16:55
推 givemepass:1f的做法是很標準的Holder使用法 只有第一次inflate 06/20 21:44
→ givemepass:稍微慢一點而已 06/20 21:44