在实现给ListView添加item时遇到一个问题,当程序在初始化的时候添加item可以成功显示,但是之后再动态添加item就无法正确的显示,通过Log可以发现已经添加成功了,并且在程序退出的一瞬间可以看到被添加的item。void AddListItem(int iType,String str1,String str2){
Map<String,Object> item;
item = new HashMap<String,Object>();
item.put("pic",R.drawable.pic+iType);
item.put("name",str1);
item.put("exp",str2);
listdata.add(item);
ListAdapter la = listView.getAdapter();
((SimpleAdapter)la).notifyDataSetChanged();
}初始化和动态添加都是调用的同一个函数。
是不是还有哪个地方需要设置啊?
Map<String,Object> item;
item = new HashMap<String,Object>();
item.put("pic",R.drawable.pic+iType);
item.put("name",str1);
item.put("exp",str2);
listdata.add(item);
ListAdapter la = listView.getAdapter();
((SimpleAdapter)la).notifyDataSetChanged();
}初始化和动态添加都是调用的同一个函数。
是不是还有哪个地方需要设置啊?
// if (changed) { 这句要去掉。
int childLeft = 0;
final int childCount = getChildCount();
for (int i=0; i<childCount; i++) {
final View childView = getChildAt(i);
if (childView.getVisibility() != View.GONE) {
final int childWidth = childView.getMeasuredWidth();
childView.layout(childLeft, 0,
childLeft+childWidth, childView.getMeasuredHeight());
childLeft += childWidth;
}
}
//}
}写出来给以后的人用,免得又浪费时间。给分,结贴。
// if (changed) { 这句不要
int childLeft = 0;
final int childCount = getChildCount();
for (int i=0; i<childCount; i++) {
final View childView = getChildAt(i);
if (childView.getVisibility() != View.GONE) {
final int childWidth = childView.getMeasuredWidth();
childView.layout(childLeft, 0,
childLeft+childWidth, childView.getMeasuredHeight());
childLeft += childWidth;
}
}
//}
}
写出来以免后人浪费时间。给分,结贴。顺便BS一下CSDN,害我写了两遍。