想请问各位大大
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掉
作者:
okskygo (来)
2014-06-20 14:19:00getChildType() and getChildTypeCount()
你用polymorphism去解这个问题就一切都解决了converView用父class宣告,再依照不同的new不同的childclass
plymorphism的前提是View内容一样QQ 我是要有不同的view然后因为convertview reuse的关系 所以会出错
一楼的方法不行吗!?全部塞在同一个layout然后塞值进去adapter, 再改写adapter让要显示的layoutvisible就可以啦
1f的做法是很标准的Holder使用法 只有第一次inflate稍微慢一点而已