提升ListView的运行效率
来源:互联网 发布:淘宝页面装修尺寸 编辑:程序博客网 时间:2024/04/29 21:32
主要解决2方面问题
1.在getView()方法中,每次都将布局重新加载一遍
2.在getView()方法中,每次都会调用View的findViewById()方法来获取一次控件
解决方法
1.在getView方法中有一个convertView参数,这个参数会将之前加载好的布局进行缓存
2.借助一个ViewHolder来解决每次获取控件的问题
package com.example.listviewtest;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.ImageView;import android.widget.TextView;import java.util.List;/** * Created by Administrator on 17/07/29. */public class FruitAdapter extends ArrayAdapter<Fruit> { private int resuorceID; public FruitAdapter(Context context, int textViewResuorceID, List<Fruit> objects){ super(context, textViewResuorceID, objects); resuorceID = textViewResuorceID; } @Override public View getView(int position, View convertView, ViewGroup parent){ Fruit fruit = getItem(position); /* convertView参数用于将之前加载好的布局进行缓存,以便以后进行重用 */ View view; ViewHolder viewHolder; if (convertView == null){ view = LayoutInflater.from(getContext()).inflate(resuorceID, parent, false); viewHolder = new ViewHolder(); viewHolder.fruitImage = (ImageView) view.findViewById(R.id.fruit_image); viewHolder.fruitName = (TextView) view.findViewById(R.id.fruit_name); view.setTag(viewHolder); }else{ view = convertView; viewHolder = (ViewHolder)view.getTag(); } viewHolder.fruitImage.setImageResource(fruit.getImageID()); viewHolder.fruitName.setText(fruit.getName()); return view; } class ViewHolder { ImageView fruitImage; TextView fruitName; }}
阅读全文
0 0
- 提升ListView的运行效率
- 提升ListView的运行效率
- 提升ListView的运行效率
- 提升ListView的运行效率
- 提升ListView的运行效率
- Android 提升ListView的运行效率
- Android:提升ListView的运行效率
- 【Android】43、提升ListView 的运行效率
- 提升ListView的运行效率和ListView的其他属性
- 优化ListView提升运行效率
- 安卓开发:提升ListView的运行效率
- 09读书笔记之提升ListView的运行效率
- 提升ListView运行效率两个方法
- Android中ListView的使用(三)----- 提升ListView运行效率
- 【Android】安卓学习笔记之提升ListView 的运行效率
- ListView的使用用ViewHolder提升效率
- ListView运行效率的优化
- ListView提升运行效率及增加点击事件
- C++生成和解析XML文件
- Java数组基本知识
- javascript获取当前时间以及修改时间
- Laravel中Blade模板引擎流程控制
- Javascript编程原则和良好习惯
- 提升ListView的运行效率
- c#匿名类与匿名函数、lambda表达式
- Redis源码剖析-链表list
- windows 命令行解析
- 原生js分页功能
- flowable 五个引擎和组成引擎的服务
- Python报错IOError: [Errno 22] invalid mode ('r') or filename
- sping boot 打war 包 在tomcat 中运行
- Linux命令大全