BaseAdapter工具类

来源:互联网 发布:edius软件 编辑:程序博客网 时间:2024/06/16 21:21
<span style="font-family:Comic Sans MS;font-size:18px;">package com.example.listview;import java.util.List;import com.example.json.R;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;public class MyAdapter extends BaseAdapter {private List<Item> list;private Context context;public MyAdapter(List<Item> list, Context context) {super();this.list = list;this.context = context;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn list.size();// 返回数据个数}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn list.get(position);// 返回指定索引对应的数据项}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;// 获取指定行对应的id}/** * 获取每一个item的显示内容 */@Overridepublic View getView(int position, View convertView, ViewGroup parent) {/** * 第一种方式:完全没有利用ListView的缓存机制,每次加载都创建一个新的view对象,对资源是极大的浪费 */// View view = LayoutInflater.from(context).inflate(R.layout.item,// null);//布局加载器,返回一个view对象// ImageView image=(ImageView) view.findViewById(R.id.image);// TextView title=(TextView) view.findViewById(R.id.title);// TextView content=(TextView) view.findViewById(R.id.content);// //讲数据加载到item上// Item item=list.get(position);// image.setImageResource(item.getImage());// title.setText(item.getTitle());// content.setText(item.getContent());// return view;/** * 第二种方式,充分利用了ListView的缓存机制,但findViewById依旧浪费时间 */// 如果缓存中没有convertView,则重新创建换一个view// if (convertView == null) {// convertView = LayoutInflater.from(context).inflate(R.layout.item,// null);// }// //如果缓存中有view,则直接取出来设置并使用,不用创建一个新的view// ImageView image = (ImageView) convertView.findViewById(R.id.image);// TextView title = (TextView) convertView.findViewById(R.id.title);// TextView content = (TextView) convertView.findViewById(R.id.content);// // 讲数据加载到item上// Item item = list.get(position);// image.setImageResource(item.getImage());// title.setText(item.getTitle());// content.setText(item.getContent());// return convertView;/** * 第三种文艺式:不仅充分利用了ListView的缓存,还避免了重复找控件  * 步骤 1:创建一个ViewHolder,声明所需要的控件  * 2 声明ViewHolder并实例化,判断缓存中是否存在view,不存在则创建,并把控件存放到缓存中 * 3 通过setTag将viewHolder和convertView绑定 */ViewHolder viewHolder;if (convertView == null) {viewHolder =new ViewHolder();//由于我们只需要将XML转化为View,并不涉及到具体的布局,所以第二个参数通常设置为nullconvertView = LayoutInflater.from(context).inflate(R.layout.item,null);viewHolder.image=(ImageView) convertView.findViewById(R.id.image);viewHolder.title=(TextView) convertView.findViewById(R.id.title);viewHolder.content=(TextView) convertView.findViewById(R.id.content);convertView.setTag(viewHolder);}else{viewHolder=(ViewHolder) convertView.getTag();//取出数据}//加载数据 Item item = list.get(position); viewHolder.image.setImageResource(item.getImage()); viewHolder.title.setText(item.getTitle()); viewHolder.content.setText(item.getContent()); return convertView;}//用于缓存控件class ViewHolder {public ImageView image;public TextView title;public TextView content;}}</span>

0 0
原创粉丝点击