Listview的优化--convertView 2017 06 22
来源:互联网 发布:年鹏外设淘宝店 编辑:程序博客网 时间:2024/06/01 21:02
在我们 的自定义ListView的实现中,重写getView方法时,可以实现convertView的优化,使ListView的Item实现复用,大大减少了ListView加载iten的效率;以下是一个Demo
getView的复用步骤为:
1,判断convertView是否为空,为空则是表示第一次加载Item,则通过布局映射器LayoutInflater来加载我们的自定义布局;
2、判断为false则进行复用,我们定义一个ViewHolder,在ViewHolder类中声明我们定义的Item显示布局的控件即可,我们就是设置textView即可
3、对第一步中进行ViewHolder进行实例化,然后初始化ViewHolder中声明的TextView控件,并给convertView打标签来绑定ViewHolder;
4、对ViewHolder实例化对象中的TextView 控件进行设置数据源
5、返回convertView对象
具体代码
public class MainActivity extends AppCompatActivity { private ArrayList<String> list; private MyAdapter adapter; private ViewHolder holder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView lv = (ListView) findViewById(R.id.lv); list = new ArrayList(); for (int i=0;i<=40;i++){ list.add("数据"+i); } adapter = new MyAdapter(); lv.setAdapter(adapter); lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override //设置点击事件的参数 parent属性指的是AdapterView的对象,即为listView,position是数据的索引,id则是数据所在ListView的行号 public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(MainActivity.this, "你点击了索引是:"+position+"行Id:"+id, Toast.LENGTH_SHORT).show(); } }); } class MyAdapter extends BaseAdapter{ @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { //获取布局LayoutInflate布局映射器 LayoutInflater inflater = LayoutInflater.from(MainActivity.this); convertView = inflater.inflate(R.layout.myadapter, null); holder = new ViewHolder(); holder.tv = (TextView) convertView.findViewById(R.id.textView); //打标签 将holder绑定给convertView convertView.setTag(holder); Log.d("TAG", "getView:方法创建" + convertView); } else {//进行复用 holder = (ViewHolder) convertView.getTag(); Log.d("TAG", "getView:方法复用" + convertView); } holder.tv.setText(list.get(position)); return convertView; } } class ViewHolder{ //把布局文件需要用到的控件进行声明 TextView tv; }}
阅读全文
0 0
- Listview的优化--convertView 2017 06 22
- ListView的优化和convertView
- ListView的优化:convertView + viewHolder
- 使用Adapter提供的convertView优化Listview
- ListView的性能优化-convertView和viewHolder
- 使用convertView优化ListView
- 利用convertView优化ListView性能
- 利用convertView优化ListView性能
- 利用convertView优化ListView性能
- 利用convertView优化ListView性能
- 利用convertView优化ListView性能
- 利用convertView优化ListView性能
- 利用convertView优化ListView性能
- 利用convertView优化ListView性能
- 利用convertView优化ListView性能
- 利用convertView优化ListView性能
- 利用convertView优化ListView性能
- 利用convertView优化ListView性能
- 基于ubuntu14.04的ROS indigo的安装和卸载
- css优先级与特指度
- CSS3 1 边框-背景-文本-字体
- Linux时间函数
- PAT乙级真题及训练集(14)--1036. 跟奥巴马一起编程(15)
- Listview的优化--convertView 2017 06 22
- 微信小程序中实现地图导航
- 利用Python爬取基于AES对称加密算法的网易云音乐用户评论数据
- UDP 协议的运用 用python写飞秋广播炸弹
- 学习笔记:MySQL基准测试之BENCHMARK()和mysqlslap
- 剪切板
- 说说Quartz Scheduler任务调度框架
- yii Exception (Exception) 'yii\base\Exception' with message 'Failed to change permissions for direc
- 遍历Map的三种方法