BaseAdapter的getView()与ViewHolder的两种写法-更深刻理解ViewHolder
2016-12-09 17:19
423 查看
普通android基础书上都会写这种:
这里给出第二种写法【方便抽取DefaultAdapter和BaseViewHolder进行快速开发】
private class HomeAdapter extends BaseAdapter{ ...... @Override public View getView(int position, View convertView, ViewGroup parent) { View view; ViewHolder holder; if(convertView==null){ view=View.inflate(UiUtils.getContext(), R.layout.item_app, null); holder=new ViewHolder(); holder.item_icon=(ImageView) view.findViewById(R.id.item_icon); holder.item_title=(TextView) view.findViewById(R.id.item_title); holder.item_size=(TextView) view.findViewById(R.id.item_size); holder.item_bottom=(TextView) view.findViewById(R.id.item_bottom); holder.item_rating=(RatingBar) view.findViewById(R.id.item_rating); view.setTag(holder); }else{ view=convertView; holder=(ViewHolder) view.getTag(); } AppInfo appInfo=datas.get(position); holder.item_title.setText(appInfo.getName());// 设置应用程序的名字 String size=Formatter.formatFileSize(UiUtils.getContext(), appInfo.getSize()); holder.item_size.setText(size); holder.item_bottom.setText(appInfo.getDes()); float stars = appInfo.getStars(); holder.item_rating.setRating(stars); // 设置ratingBar的值 String iconUrl = appInfo.getIconUrl(); //http://127.0.0.1:8090/image?name=app/com.youyuan.yyhl/icon.jpg // 显示图片的控件 bitmapUtils.display(holder.item_icon, HttpHelper.URL+"image?name="+iconUrl); return view; } ...... } static class ViewHolder{ ImageView item_icon; TextView item_title,item_size,item_bottom; RatingBar item_rating; }
这里给出第二种写法【方便抽取DefaultAdapter和BaseViewHolder进行快速开发】
private class HomeAdapter extends BaseAdapter{ ...... @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if(convertView==null){ holder=new ViewHolder(); }else{ holder=(ViewHolder) convertView.getTag(); } AppInfo appInfo=datas.get(position); holder.setData(appInfo); return holder.getContentView(); } ...... } static class ViewHolder{ ImageView item_icon; TextView item_title,item_size,item_bottom; RatingBar item_rating; View contentView; AppInfo appInfo; public ViewHolder(AppInfo appInfo){ contentView = initView(); contentView.setTag(this); } public void setData(AppInfo appInfo){ this.appInfo = appInfo; refreshView(appInfo); } public View getContentView(){ return contentView; } } public View initView(){ View view; view = View.inflate(UiUtils.getContext(), R.layout.item_app, null); this.item_icon=(ImageView) view.findViewById(R.id.item_icon); this.item_title=(TextView) view.findViewById(R.id.item_title); this.item_size=(TextView) view.findViewById(R.id.item_size); this.item_bottom=(TextView) view.findViewById(R.id.item_bottom); this.item_rating=(RatingBar) view.findViewById(R.id.item_rating); return view; } public void refreshView(AppInfo appInfo){ this.item_title.setText(appInfo.getName());// 设置应用程序的名字 String size=Formatter.formatFileSize(UiUtils.getContext(), appInfo.getSize()); this.item_size.setText(size); this.item_bottom.setText(appInfo.getDes()); float stars = appInfo.getStars(); this.item_rating.setRating(stars); // 设置ratingBar的值 String iconUrl = appInfo.getIconUrl(); //http://127.0.0.1:8090/image?name=app/com.youyuan.yyhl/icon.jpg // 显示图片的控件 bitmapUt 4000 ils.display(this.item_icon, HttpHelper.URL+"image?name="+iconUrl); }
相关文章推荐
- BaseAdapter几个重载方法介绍isEnabled,getViewTypeCount ,getItemViewType
- BaseAdapter中重写getview的心得以及convertView回收的机制
- ViewHolder模式的简洁写法
- 理解Surface,SurfaceView,SurfaceHolder,SurfaceHolder.CallBack
- 利用ViewHolder优化自定义Adapter的典型写法
- android中SurfaceView SurfaceHolder SurfaceHolder.Callback 关系 理解
- android ViewHolder模式超简洁写法
- BaseAdapter中重写getview的心得以及发现convertView回收的机制
- ViewHolder简单写法
- ViewHolder模式简洁写法
- Android中利用ViewHolder优化自定义Adapter的典型写法
- 【工具类】ViewHolder模式超简洁写法
- Android有用的工具类:倒计时器、 ViewHolder简化写法
- ViewHolder模式的简洁写法
- ViewHolder模式超简洁写法,很cool!
- xib自定义uitablecell 的两种写法(uitableview custom cell from xib)
- ListView的另一种可读性更强的ViewHolder模式写法
- ViewHolder模式超简洁写法,很cool!
- BaseAdapter中重写getview的心得以及发现convertView回收的机制
- android中ViewHolder通用简洁写法