解决方案 »

  1.   

    这个是 contentview  的复用的问题   getview一般这么写 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    ImageView view = null;
    if(convertView == null) {
    //convertView 为空的时候创建 这个convertView 
    view = new ImageView(mContext);
    view.setLayoutParams(new AbsListView.LayoutParams(wh, wh));
    view.setScaleType(ImageView.ScaleType.FIT_CENTER);
    } else {//convertView 不为空的时候  直接使用 convertView   这样就不用每次都去创建了
    view = (ImageView) convertView;
    }
    // 这下面的逻辑自己写

    return view;
    }
    如果你 不想这样复用  想每个都存内存,那我不推荐了,你要这么做   你就用个listview 把所有的contentview 都存起来就行了,在getview的时候直接拿它对应的  convertView 
      

  2.   

    这样写比较好
    public View getView(int position, View convertView, ViewGroup parent) {
    Holder holder=null;
    if(convertView==null){
    convertView=LayoutInflater.from(context).inflate(R.layout.newlistitem, null);
    holder=new Holder();
    holder.image=(ImageView) convertView.findViewById(R.id.image);
    holder.name=(TextView) convertView.findViewById(R.id.name);
    holder.phone=(TextView) convertView.findViewById(R.id.phone);
    convertView.setTag(holder);
    }
    else
    {
    holder=(Holder) convertView.getTag();
    }
      

  3.   

    ListView 本身就有View缓存功能,你以为ListView让你每次赋值是没事干嘛? View是内存消耗大户,特别是ListView这种包含View比较多的Group。而内存优化的工作ListView已经帮你做好了,你现在想用空间换时间,是得不偿失的,赋值能消耗多少时间,CPU这么高速的时代几乎忽略不计,而Android为什么总会那么卡,就是内存优化不足,GC反复查都查不出多余的内存,这是程序员对内存优化不够造成的。