为什么我的适配器第一次显示正常,可以显示所有的数据,第二次调用的时候,只显示最后一条数据,而且是重复显示多次,有几条数据显示几次,数据是没有错的
public class GridViewAdapter extends BaseAdapter {
private List list;
LayoutInflater inflater;
PopupActivity popupActivity;
public GridViewAdapter(PopupActivity popupActivity,List list) {
this.list = list;
this.popupActivity=popupActivity;
inflater = (LayoutInflater) popupActivity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return list.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
ViewHolder holder;
int p;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
p=position;
holder = null;
if (convertView == null) {
convertView = inflater.inflate(R.layout.photo_item, null);
holder = new ViewHolder();
holder.img = (ImageView) convertView.findViewById(R.id.ItemImage);
holder.userlevel_1 = (TextView) convertView.findViewById(R.id.ItemText);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
final Map map = (Map) list.get(position);
//displayImage(map.get("ItemImage").toString(), holder.img);
holder.img.setImageBitmap(popupActivity.getLoacalBitmap(map.get("ItemImage").toString()));
holder.userlevel_1.setText(map.get("ItemText").toString());
Log.i("2222222222222222222222222", map.get("ItemText").toString());
/*convertView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
popupActivity.changeHeadIcon(p);
}
});*/
return convertView;
}
public static class ViewHolder {
public ImageView img;
public TextView userlevel_3;
public TextView userlevel_2;
public TextView userlevel_1;
public TextView gf_name;
public TextView goods_name;
public TextView lowest_price;
public TextView sale_count;
public LinearLayout suits;
public LinearLayout suits1;
}
}
holder = null;你在getVIew里面把这一句去掉试试
convertview不为空的情况下数据第二次获取的时候重复了,复用没有处理好;在getView方法里面这样写就可以了
ViewHolder holder = null;
if(convertView != null){
holder = convertview.getTag();
}else{
holder = new ViewHolder();
...
}
还有你这个int p 不觉得没有什么用吗?
一个子项弄了那么多控件,是什么效果,有空我运行下。。。。