关闭

Android——ListView的简单优化

标签: androidlistview控件优化
197人阅读 评论(0) 收藏 举报
分类:

在重写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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:55222次
    • 积分:1152
    • 等级:
    • 排名:千里之外
    • 原创:62篇
    • 转载:1篇
    • 译文:0篇
    • 评论:7条
    文章分类
    最新评论