adpter笔记_毛吃货的博客-程序员宝宝

Adapter的作用就是ListView界面与数据之间的桥梁,当列表里的每一项显示到页面时,都会调用Adapter的getView方法返回一个View。 

优化的思路两种: 

1. View的重用 
    View的每次创建是比较耗时的,因此对于getview方法传入的convertView应充分利用 != null的判断 

2.ViewHolder的应用 

View的findViewById()方法也是比较耗时的,因此需要考虑只调用一次,之后就用View.getTag()方法来获得ViewHolder对象。 

public class MyAdapter extends BaseAdapter {
private Context mContext;
private LayoutInflater mInflater;


public MyAdapter(Context context) {
this.mContext = context;
mInflater = LayoutInflater.from(mContext);
}


public int getCount() {
return mmsList.size();
}


public Object getItem(int arg0) {
return arg0;
}


public long getItemId(int arg0) {
return arg0;
}


public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.mmslistitem, null);
holder.img = (ImageView) convertView.findViewById(R.id.mmsflag);
holder.subject = (TextView) convertView
.findViewById(R.id.mmssubject);
holder.date = (TextView) convertView.findViewById(R.id.mmsdate);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
MMSDBItem mmsItem = mmsList.get(position);
holder.subject.setText(mmsItem.getSubject());
String today = DateFormat.format("yyyy-MM-dd",
System.currentTimeMillis()).toString();
String dateStr = DateFormat.format("yyyy-MM-dd kk:mm",
mmsItem.getDate()).toString();
holder.date.setText(dateStr);
if (mmsItem.getFlag() == 0) {
holder.img.setBackgroundResource(R.drawable.new_message_32);
} else {
holder.img
.setBackgroundResource(R.drawable.message_already_read_32);
}
return convertView;
}


public final class ViewHolder {
public ImageView img;
public TextView subject;
public TextView date;
}
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dao_89/article/details/12776157

智能推荐

python接私活王者_大牛程序员利用Python开发王者荣耀带妹神器,一路直奔上王者..._weixin_39915078的博客-程序员宝宝

王者荣耀 -很火的手游-简直老少通吃-令人发指-虽然操作简单-但为什么你还是会被虐, 其实 是有技巧的--本文Python大神带你研究王者荣耀各类英雄的出装小技巧,让你成为大神般的存在前期准备环境:Python3+ WindowsIDE:随意模块:1 from urllib.request importurlretrieve23 import requests首先找到三个接口第一个是英雄武器的接口...

C# winform 上传文件、图片_liuxueyanshi1的博客-程序员宝宝

方案一:注意:要开启虚拟目录的“写入”权限,要不然就报 403 错误工作中用到winform上传文件(-_-!,很少用winform,搞了半天) 碰到一点问题,解决如下 1、501 为实现错误 解决方法: 先把IISWEB服务扩展中的WebDev打开 然后 IIS站点添加MIME txt类型 常见的MIME类型如下 超文本标记语言文本 .html,.html text/html 普

BODIPY 581/591 C11(脂质过氧化传感器);CAS: 217075-36-0_齐岳生物mio的博客-程序员宝宝

BODIPY 581/591 C11(脂质过氧化传感器)生物活性 C11-BODIPY581/591 是一种脂质氧化荧光比率探针。C11-BODIPY581/591 通常用于指示模型膜系统和活细胞中的脂质过氧化和抗氧化功效。C11-BODIPY581/591 用于铁死亡的定量.研究 C11-BODIPY581/591 可以轻松进入膜,对非氧化 (595 nm) 和氧化 (520 nm) 形式表现出良好的光谱分离。C11 BODIPY581/591 的储备溶液通过将 1 mg 溶解在 20 mM 有机溶剂中制

android加载网页的组件,Android加载Html的方法_IKEA宜家家居的博客-程序员宝宝

1.跳转到浏览器直接访问页面,这段代码是在Activity中拷贝来的,所以有startActivity()方法Uri uri = Uri.parse("http://www.XXXX.com"); //要链接的地址Intent intent = new Intent(Intent.ACTION_VIEW, uri);startActivity(intent);2.使用TextView显示HTML方...

代码重构(四):条件表达式重构规则_AlbenXie的博客-程序员宝宝

代码重构(四):条件表达式重构规则继续更新有关重构的博客,前三篇是关于类、函数和数据的重构的博客,内容还算比较充实吧。今天继续更新,本篇博客的主题是关于条件表达式的重构规则。有时候在实现比较复杂的业务逻辑时,各种条件各种嵌套。如果处理不好的话,代码看上去会非常的糟糕,而且业务逻辑看上去会非常混乱。今天就通过一些重构规则来对条件表达式进行重构,让业务逻辑更为清晰,代码更以维护和扩

随便推点

linux 添加用户及权限设置,useradd和groupadd(Linux创建用户\用户组\设置\分配用户权限\多用户远程登录权限)的使用..._一天到晚散步的鱼的博客-程序员宝宝

前言:man useradd    man groupadd    info useradd    info groupadd 都可以获取相关命令的用法信息。个人比较喜欢读英文解释文档,没有你想象的那么complicated!??USERADD(8) System Management Commands USERADD(8)NAMEuseradd - create a new user or ...

android BitmapDrawable的使用_Zju_Jemery的博客-程序员宝宝

//功能:显示缩略图,大小为40*40//通过openRawResource获取一个inputStream对象 InputStream inputStream = getResources().openRawResource(R.drawable.test); //通过一个InputStream创建一个BitmapDrawable对象 BitmapDrawable drawab

【iOS开发】Alamofire框架的使用一基本用法_weixin_34409357的博客-程序员宝宝

 Alamofire框架的使用一 —— 基本用法对于使用Objective-C的开发者,一定非常熟悉AFNetworking这个网络框架。在苹果推出的Swift之后,AFNetworking的作者专门用Swift来编写一个类似AFNetworking的网络框架,称为Alamofire。Alamofire地址 >>我分两篇文章介绍如何使用Alamofire框架。文章的内容主要是...

C#学习笔记:栈溢出异常(StackOverflowException)_c# stackoverflow_shifenglv的博客-程序员宝宝

最近写了一个C#程序,也就是循环从文件里读取3000多个浮点数到数组中,结果运行程序就报告栈溢出异常(StackOverflowException)。我以为是自己定义了一个很大的局部变量把栈给占满了,检查发现只有几个很小的局部变量,而占用内存大的数组都是用new来分配空间的,按理说空间应该分配在堆区,不应该出现栈溢出。我以为是数据量太大了把堆也给填满了,于是写了一个测试程序,循环读取100000个浮

最大开源软件公司卖了 340 亿美元,免费是如何变成一门生意的?_普通网友的博客-程序员宝宝

IBM 上周日宣布了自己史上最大一笔收购——340 亿美元买下红帽(Red Hat)。IBM 买公司不足为奇,这家公司的大转型基本都离不开收购。但 Red Hat 是全球最大的 Linux 开源系统开发商,它的操作系统不像微软 Windows 每台收取数十美元授权费。与免费相伴左右的开源生意卖了 340 亿美元,IBM 为此付出 60% 溢价。开源软件怎么赚钱说来也不太复杂,红帽现任 CE...

kubernetes实践指南(五)_bidiece6814的博客-程序员宝宝

一、k8s插件介绍二、dns插件安装三、dashboard安装四、metric-server安装一、k8s插件介绍1、在kubernetes-server源码包解压完后解压目录/kubernetes/cluster/addons/有提供各种插件的安装方法包括dns、dashboard、prometheus、cluster-monitoring、metric-server等等2、举例dash...