[问题] ExpandableListView 多种 child view

楼主: issuemylove (NotLove)   2014-06-20 10:48:23
想请问各位大大
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的优点了?
}
抱歉有点难表达
单纯就这有什么好解法吗?
谢谢!
作者: passli   2014-06-20 12:23:00
用一个layout.xml 然后把你全部要的view 都写进去再判断那一个要show,其他gone掉
楼主: issuemylove (NotLove)   2014-06-20 13:58:00
谢谢给的方向! 我试试看
作者: okskygo (来)   2014-06-20 14:19:00
getChildType() and getChildTypeCount()
作者: jknm0510a (Kang)   2014-06-20 15:00:00
你用polymorphism去解这个问题就一切都解决了converView用父class宣告,再依照不同的new不同的childclass
楼主: issuemylove (NotLove)   2014-06-20 15:17:00
plymorphism的前提是View内容一样QQ 我是要有不同的view然后因为convertview reuse的关系 所以会出错
作者: zerofinal (人生~)   2014-06-20 16:43:00
一楼的方法不行吗!?全部塞在同一个layout然后塞值进去adapter, 再改写adapter让要显示的layoutvisible就可以啦
楼主: issuemylove (NotLove)   2014-06-20 16:55:00
1F的方法可以^^
作者: givemepass (λ)   2014-06-20 21:44:00
1f的做法是很标准的Holder使用法 只有第一次inflate稍微慢一点而已

Links booklink

Contact Us: admin [ a t ] ucptt.com