[問題] ExpandableListView 多種 child view

看板AndroidDev作者 (skill)時間11年前 (2014/06/20 10:48), 編輯推噓3(3013)
留言16則, 6人參與, 最新討論串1/1
想請問各位大大 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

06/20 12:23, , 1F
用一個layout.xml 然後把你全部要的view 都寫進去
06/20 12:23, 1F

06/20 12:24, , 2F
再判斷那一個要show,其他gone掉
06/20 12:24, 2F

06/20 13:58, , 3F
謝謝給的方向! 我試試看
06/20 13:58, 3F

06/20 14:19, , 4F
getChildType() and getChildTypeCount()
06/20 14:19, 4F

06/20 15:00, , 5F
你用polymorphism去解這個問題就一切都解決了
06/20 15:00, 5F

06/20 15:01, , 6F
converView用父class宣告,再依照不同的new不同的child
06/20 15:01, 6F

06/20 15:01, , 7F
class
06/20 15:01, 7F

06/20 15:17, , 8F
plymorphism的前提是View內容一樣QQ 我是要有不同的
06/20 15:17, 8F

06/20 15:17, , 9F
view
06/20 15:17, 9F

06/20 15:18, , 10F
然後因為convertview reuse的關係 所以會出錯
06/20 15:18, 10F

06/20 16:43, , 11F
一樓的方法不行嗎!?全部塞在同一個layout
06/20 16:43, 11F

06/20 16:45, , 12F
然後塞值進去adapter, 再改寫adapter讓要顯示的layout
06/20 16:45, 12F

06/20 16:45, , 13F
visible就可以啦
06/20 16:45, 13F

06/20 16:55, , 14F
1F的方法可以^^
06/20 16:55, 14F

06/20 21:44, , 15F
1f的做法是很標準的Holder使用法 只有第一次inflate
06/20 21:44, 15F

06/20 21:44, , 16F
稍微慢一點而已
06/20 21:44, 16F
文章代碼(AID): #1Jew3vsY (AndroidDev)