数据适配器——BaseAdapter

可以自定义View或者利用参数中的convertView

一、逗比式

没有任何优化处理,每次都创建新的View,设置控件,效率极其低下

``` @Override

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

//逗比式(没有利用到ListView的缓存机制)//

View view = mInflater.inflate(R.layout.item,null);//装载到item中的布局文件

ImageView imageView = (ImageView) view.findViewById(R.id.iv_image);

TextView title = (TextView) view.findViewById(R.id.iv_title);

TextView content = (TextView) view.findViewById(R.id.iv_content);

ItemBean bean = mList.get(position);

imageView.setImageResource(bean.ItemImage);

title.setText(bean.ItemTitle);

content.setText(bean.ItemContent);

return view;

//逗比式//

}

二、普通式

-----

利用了ListView的缓存特性,如果没有缓存才创建新的View。算入门,但是findViewById依然会浪费大量时间

@Override

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

//普通式

if (convertView == null) {

convertView = mInflater.inflate(R.layout.item, null);

}

ImageView imageView = (ImageView) convertView.findViewById(R.id.iv_image);

TextView title = (TextView) convertView.findViewById(R.id.iv_title);

TextView content = (TextView) convertView.findViewById(R.id.iv_content);

ItemBean bean = mList.get(position);

imageView.setImageResource(bean.ItemImage);

title.setText(bean.ItemTitle);

content.setText(bean.ItemContent);

return content;

//普通式

三、文艺式

-----

不仅利用了ListView的缓存,更通过ViewHolder类来实现显示数据的视图的缓存,避免多次通过findViewById寻找控件(这是最号的写法)

1>创建内部类ViewHolder

2>判断convertView是否为空

3>通过setTag将ViewHolder与convertView绑定

//文艺式///

ViewHolder viewHolder;

if (convertView == null) {

viewHolder = new ViewHolder();

convertView = mInflater.inflate(R.layout.item, null);

viewHolder.imageView = (ImageView) convertView.findViewById(R.id.iv_image);

viewHolder.title = (TextView) convertView.findViewById(R.id.iv_title);

viewHolder.content = (TextView) convertView.findViewById(R.id.iv_content);

convertView.setTag(viewHolder);

} else {

viewHolder = (ViewHolder)convertView.getTag();

}

ItemBean bean = mList.get(position);

viewHolder.imageView.setImageResource(bean.ItemImage);

viewHolder.title.setText(bean.ItemTitle);

viewHolder.content.setText(bean.ItemContent);

return convertView;

//文艺式///

}

class ViewHolder {

public ImageView imageView;

public TextView title;

public TextView content;

}

android自定义adapter怎么优化,Android必学-BaseAdapter的使用与优化相关推荐

  1. Android自定义Adapter的ListView的思路及代码

    Android自定义Adapter的ListView的思路及代码,需要的朋友可以参考一下 width="650" height="200" align=&quo ...

  2. android自定义adapter(实现对按钮的监听)

    我们一般需要自定义adapter   这里就需要继承BaseAdapter adapter在MVC开发模式中,是控制层 baseAdapter  继承这个方法必须重写 四个方法 1.  getcont ...

  3. Android 自定义Adapter以实现自定义填充ListView的Item

    1>实体类---即ListView中各个Item中填充的内容 package com.demo.cxc.compoundview.com.demo.cxc.entity;import java. ...

  4. android 自定义adapter

    Adapter是用来帮助填充数据的中间桥梁,比如通过它将数据填充到ListView, GridView, Gallery等,而android的adapter又有很多种(ArrayAdapter, Ba ...

  5. android 自定义view局部刷新,Android 优化之局部刷新

    RecyclerView 局部刷新 相信现在已经很少人不用 RecyclerView 了,如果只有一个 item 的数据源改变的时候,大家都会用 notifyItemChanged(int posit ...

  6. android listview自定义顶部,Android自定义Adapter的ListView的思路及代码

    在开发中,我们经常使用到ListView这个控件.Android的API也提供了许多创建ListView适配器的快捷方式.例如ArrayAdapter.SimpleAdapter和SimpleCurs ...

  7. Android自定义弹窗模仿微信,Android 仿微信朋友圈点赞和评论弹出框功能

    本文简单模仿微信朋友圈的点赞和评论弹出框,布局等细节请忽略,着重实现弹出框.发评论,及弹出位置的控制. 1. 微信弹出框 微信朋友圈的点赞和评论功能,有2个组成部分: 点击左下角的"更多&q ...

  8. android 自定义view 硬件加速,Android自定义View(八) -- 硬件加速

    Android自定义View(八) – 硬件加速 今天学习自定义View部分的最有一篇:硬件加速因为无法录制GIF,所以本篇内容基本为原博 本文计划根据HenCoder系列文章进行学习,所以代码风格及 ...

  9. android自定义下拉筛选,android自定义Spinner下拉菜单(下拉列表框)样式

    在Android中Spinner就是下拉菜单,它相当于HTML中的标签. Android中提供的Spinner Widget下拉菜单已经非常好用了,样式也适用, 不过我们还是可以通过定义xml的方式来 ...

最新文章

  1. 应该知道的自动化测试陷阱2
  2. RxSwift 系列(一)
  3. WampServer的配置
  4. c 语言输入n个数求和,c++---天梯赛---N个数求和
  5. 冒着得罪大佬的风险,曝光下这件事
  6. Jmeter接口测试实例图文示例
  7. Sonic-UI自动化用例编写教程与建议
  8. java冷门小功能代码收集
  9. godaddy无法修改域名服务器,godaddy的DNS A记录不能修改原因
  10. 彻底带你入门RDS数据库「玩转华为云」
  11. 维特智能IMU 接入ROS发布IMU数据类型话题
  12. 深度学习 (一)计算机如何处理和识别图片揭秘
  13. 【收藏】2019届互联网大厂公司校招薪资汇总,基本年薪都在20万以上
  14. mysql查询历史执行sql记录
  15. BUUCTF 打卡8
  16. spring整合jdbc配置文件
  17. HTTP请求方法之options请求
  18. vpd安全策略的使用
  19. 电脑无法识别(读取)U盘
  20. 搞算法的都很强?不一定!你见过最差的算法工程师什么样?

热门文章

  1. mysql主辅同步报错_mysql数据库主辅同步Slave_IO_Running,Slave_SQL_Running错误
  2. was 程序jvm_【保家护行航】WAS知识学习分享
  3. 货物与产品的区别_超市货架和仓储式货架有什么区别?
  4. 同花顺如何切换k线_K线之形态学:浅谈纸白银产品该如何去做好交易?
  5. 推荐系统图算法实用干货汇总(含论文、代码、样例教程)
  6. Spring Cloud实战小贴士:Zuul统一异常处理(一)
  7. YUI事件体系之Y.Do
  8. Category 特性在 iOS 组件化中的应用与管控
  9. selenium.common.exceptions.WebDriverException: Message: ‘chromedriver’解决
  10. tensorflow4 代价函数、dropout、优化器