关于adapter的getView

backthought 2012-03-28 10:24:55
请问以下两种写法那种比较好 , 效率上有什么区别吗?

public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.item, null);
TextView id = (TextView) convertView.findViewById(R.id.id);
TextView name = (TextView) convertView.findViewById(R.id.name);
id.setText("xxx");
name.setText("xxx");
}
return convertView;
}


public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.item, null);
}
TextView id = (TextView) convertView.findViewById(R.id.id);
TextView name = (TextView) convertView.findViewById(R.id.name);
id.setText("xxx");
name.setText("xxx");
return convertView;
}
...全文
117 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
danielinbiti 2012-03-28
  • 打赏
  • 举报
回复
你这两种效率上差别不大吧,差别也就在于取值
现在网上资料中效率最高的应该就是保存到tag中,像下面这样
ViewHolder holder;

if (convertView == null) {
// 获得ViewHolder对象
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.callinteritem, null);
holder = new ViewHolder();
holder.callName = (TextView) convertView
.findViewById(R.id.tv_interName);
holder.callNumber = (TextView) convertView
.findViewById(R.id.tv_interNumber);
holder.callcheck = (CheckBox) convertView
.findViewById(R.id.cb_inter);
holder.inter_delete = (Button) findViewById(R.id.bt_ci_del);
convertView.setTag(holder);
} else {
// 取出holder
holder = (ViewHolder) convertView.getTag();

}
holder.callName.setText(interlist.get(position).getCallInterName());
holder.callNumber.setText(interlist.get(position)
.getCallInterNumber());

class ViewHolder {
TextView callName;
TextView callNumber;
CheckBox callcheck;
Button inter_delete;
}

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧