作者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://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1403232505.A.DA2.html
1F:→ passli:用一个layout.xml 然後把你全部要的view 都写进去 06/20 12:23
2F:→ passli:再判断那一个要show,其他gone掉 06/20 12:24
3F:→ issuemylove:谢谢给的方向! 我试试看 06/20 13:58
4F:→ okskygo:getChildType() and getChildTypeCount() 06/20 14:19
5F:推 jknm0510a:你用polymorphism去解这个问题就一切都解决了 06/20 15:00
6F:推 jknm0510a:converView用父class宣告,再依照不同的new不同的child 06/20 15:01
7F:→ jknm0510a: class 06/20 15:01
8F:→ issuemylove:plymorphism的前提是View内容一样QQ 我是要有不同的 06/20 15:17
9F:→ issuemylove:view 06/20 15:17
10F:→ issuemylove:然後因为convertview reuse的关系 所以会出错 06/20 15:18
11F:→ zerofinal:一楼的方法不行吗!?全部塞在同一个layout 06/20 16:43
12F:→ zerofinal:然後塞值进去adapter, 再改写adapter让要显示的layout 06/20 16:45
13F:→ zerofinal:visible就可以啦 06/20 16:45
14F:→ issuemylove:1F的方法可以^^ 06/20 16:55
15F:推 givemepass:1f的做法是很标准的Holder使用法 只有第一次inflate 06/20 21:44
16F:→ givemepass:稍微慢一点而已 06/20 21:44