展会信息港展会大全

关于android Adapter的技巧和设计模式
来源:互联网   发布日期:2015-10-02 16:13:35   浏览:2486次  

导读:首先声明这是自己想练练手,知识很浅显,网上也很多,大家也都晓得了,但我觉得有时候打一遍心里记得牢些,仅此而已Adapter呢,大家都认得,就是框架和数据的红娘,多少框架和数据的婚礼都是它主持的啊~具体表现......

首先声明这是自己想练练手,知识很浅显,网上也很多,大家也都晓得了,但我觉得有时候打一遍心里记得牢些,仅此而已

Adapter呢,大家都认得,就是框架和数据的红娘,多少框架和数据的婚礼都是它主持的啊~

具体表现在三个方面:

1 当每条数据进入可见区域时,Adapter的getView()会被调用,返回代表具体数据的视图

2 触摸滚动时,频繁调用(当然这里以listView为例)

3 支持成百上千条数据

看一个例子,这是最简单得方法,当然也是最慢和最不实用的

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

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

((TextView) item.findViewById(R.id.text)).setText(DATA[pos]);

((ImageView) item.findViewButId(R.id.icon)).setImageBitmap((pos & 1) == 1 ? mIcon1 : mIcon2);

return item;

}

这样就是结婚了,也是属于慢热型,看得Adapter着急啊,于是乎找了一个辅助的媒婆来,就是里面这个converView,这个converView用过之后貌似回回收,据说提高效率200%啊~

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

if (convertView == null) {

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

}

((TextView) convertView.findViewById(R.id.text)).setText(DATA[pos]);

((ImageView) convertView.findViewButId(R.id.icon)).setImageBitmap((pos & 1) == 1 ? mIcon1 : mIcon2);

return convertView;

}

看着一对新人如此迅速地坠入爱河,Adapter摆摆手说罢了罢了,好事做到底,送你们一些彩礼吧,就当为你们结婚助兴,于是乎ViewHolder跑了出来,据说又提高50%哦~

static class ViewHolder {

TextView text;

ImageView icon;

}

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

ViewHolder holder;

if (convertView == null) {

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

holder = new ViewHolder();

holder.text = (TextView) convertView.findViewById(R.id.text));

holder.icon = (ImageView) convertView.findViewButId(R.id.icon));

convertView.setTag(holder);

} else {

holder = (ViewHolder) convertView.getTag();

}

holder.text.setText(DATA[pos]);

holder.icon.setImageBitmap((pos & 1) == 1 ? mIcon1 : mIcon2);

}

赞助本站

人工智能实验室

相关热词: Adapter

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港