ListView的优化

每显示一个ListView就要重新找布局,找控件,可能会引起内存溢出,因此要进行优化,优化的思想是减少找布局找控件的次数。因此我们将所有的控件的id都放到一个类viewHolder中。判断view是否为空,如果为空建立一个view,然后为holder的属性赋值,并将holder的内容打包到view中,如果不为空的话,则getTag。

public View getView(int i, View view, ViewGroup viewGroup) {
if(view==null){//判断view是否为空
            //如果为空建立一个view
           view = View.inflate(this,R.layout.item,null);
          //新建一个holder
           ViewHolder holder = new ViewHolder();
          //为控件赋值
           holder.imageView = view.findViewById(R.id.tupian);
           holder. textView1 = view.findViewById(R.id.textView1);
           holder.textView2 = view.findViewById(R.id.textView2);
           holder. time = view.findViewById(R.id.time);
//并将holder的内容打包到view
           view.setTag(holder);
}else{
//如果不为空,则从tag中取出
holder = (ViewHolder)view.getTag();
}
//对holder的内容赋值
       User user = list.get(i);
       holder.imageView.setImageResource(R.drawable.boy);
       holder.textView1.setText(list.get(i).getName());
       holder.textView2.setText(list.get(i).getMessage());
       holder.time = view.findViewById(R.id.time);
       return view;
}
class  ViewHolder{//这个类将ListView中的所有控件打包成一个类
        ImageView imageView;
        TextView textView1;
        TextView textView2;
        TextView time;
    }

你可能感兴趣的:(ListView的优化)