Android——ListView的简单优化

来源:互联网 发布:空中蹬车知乎 编辑:程序博客网 时间:2024/05/06 08:52

在重写ListView的自定义Adapter时,之前一般都是通过重写getView()方法返回一个View,在里面一般是先通过LayoutInflater方法获取view,然后在获取View里面的控件,并为这些控件设置属性。这样做在数据很十分多的情况下,进行listView的上下拉动时会重新加载那些已经创建过得view,很浪费资源导致卡顿。
通过一种简单的方法可以有效的解决这个问题:

public View getView(int position,View convertView,ViewGroup){}

在getView中可以先判断当前位置有没有被加载过,即:判断convertView是否为空

  ViewHolder holder;if(convertView==null){  //当为空时  convertView=LayoutInflater.from(getContext()).inflate(R.layout.list_cell,null.false);  //创建一个静态内部类对象,里面用于记录convertView的所有要被编辑的控件的对象  holder=new ViewHolder();  holder.tvName=convertView.findViewById(R.id.tvName);  .  .  .  等等  //为这些控件设置属性  holder.tvName.setText("...");  .  .  .//通过convertView的setTag(Object ...)保存当前的holder; convertView.setTag(holder);}else{//如果当前的convertView已经被加载过了,那么取出holder,重新进行进行属性设置holder=(ViewHolder)convertView.getTag();}
0 0
原创粉丝点击