每显示一个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;
}
网友评论