@Override
public View getView(int position, View convertView, ViewGroup parent) {
//这里 convertView 可能是空,也可以说一个已经存在的视图,但是比较要命的是,如果 convertView 是一个包含子控件的控件组,那么它自己虽然不是null,但是部分子控件可能是被销毁的,如果使用 convertView.findViewById(id)取回控件时,是可能是 null的。
这就导致了,这个判断毫无意义,因为不能保证子控件可用,那么整个控件组也是不可用的,毕竟动态的生成那些被null了的子控件是非常麻烦的,一般convertView 是从一个xml布局文件生成的,如果子控件要动态生成,完全不能使用这种方法了。
}
大家有人遇到这种情况吗?是怎么解决的呢?
------解决思路----------------------
if (convertView != null) {
holder = (listViewHolder) convertView.getTag();
} else {
convertView = mInflater.inflate(R.layout.myblog_list, null);
holder = new listViewHolder();
holder.title=(TextView) convertView.findViewById(valueViewID[2]);
holder.notemessage=(TextView) convertView.findViewById(valueViewID[0]);
holder.notetime=(TextView) convertView.findViewById(valueViewID[1]);
convertView.setTag(holder);
}这样写吧
------解决思路----------------------
接点分。
class TAG_Layout {
TextView itemText;
CheckBox itemCheck;
ImageView itemImage;
}
public boolean initItemView(View convertView){
itemText = (TextView) convertView.findViewById(R.id.group_item_text);
if(itemText==null) return false;
FrameLayout fl = (FrameLayout) convertView.findViewById(R.id.group_item_frame);
if(fl==null) return false;
itemCheck = (CheckBox)fl.findViewById(R.id.group_item_check);
if(itemCheck==null) return false;
itemImage = (ImageView) fl.findViewById(R.id.group_item_image);
if(itemImage==null) return false;
return true;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TAG_Layout tag;
if(convertView == null){
convertView = LayoutInflater.from(mContext).inflate(R.layout.group_grid_item, null);
tag = new TAG_Layout();
tag.itemText = convertView.findViewById(R.id.group_item_text);
tag.itemCheck = convertView.findViewById(R.id.group_item_check);
tag.itemImage = convertView.findViewById(R.id.group_item_image);
convertView.setTag(tag);
} else {
tag = convertView.getTag();
}
tag.itemText.setText(sd.GroupList.get(position).Name);
tag.itemCheck.setId(position);
tag.itemCheck.setOnCheckedChangeListener(itemCheckChangedListener);
tag.itemCheck.setVisibility(showCheck);
return convertView;
}