import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import java.util.List; /** * Created by Administrator on 2015/11/6. */ public class MyAdapter extends BaseAdapter { Context context; List<Help> data; public MyAdapter(Context context,List<Help> data) { this.context = context; this.data=data; } /*返回BAseAdapter处理数据源的总数*/ @Override public int getCount() { return data.size(); } /*返回数据源中某个位置的对象*/ @Override public Object getItem(int position) { return data.get(position); } /*返回数据源中某个位置的对象的ID*/ @Override public long getItemId(int position) { return position; } /*决定布局的显示效果*/ @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder = null; /* convertView每次都要进行判空,因为有可能ListView滑动过快,导致布局来不及释放重用, 如果convertView为空,就按照正常流程,为convertView赋值确保convertView不为空*/ if(convertView==null){ convertView= LayoutInflater.from(context).inflate(R.layout.item,null); viewHolder.text1=(TextView)convertView.findViewById(R.id.text1); viewHolder.text2=(TextView)convertView.findViewById(R.id.text2); viewHolder.text3=(TextView)convertView.findViewById(R.id.text3); }else{ /*Tag不像ID是用标示view的。Tag从本质上来讲是就是相关联的view的额外的信息。 它们经常用来存储一些view的数据,这样做非常方便而不用存入另外的单独结构。他 是给View对象的一个标签,标签可以是任何内容,我们这里把他设置成了一个对象, 因为我们是把Item.xml的元素抽象出来成为一个类ViewHolder,用了setTag,这 个标签就是ViewHolder实例化后对象的一个属性。我们之后对于ViewHolder实例化 的对象holder的操作,都会因为java的引用机制而一直存活并改变convertView的 内容,而不是每次都是去new一个。*/ convertView.setTag(viewHolder); } /*此处对布局文件进行赋值*/ Help help=data.get(position); viewHolder.text1.setText(help.getName()); return convertView; } /*ViewHolder通常出现在适配器里,为的是ListView滚动的时候快速设置值,而不必每次都重新创建 很多对象,从而提升性能。ViewHolder只是将需要缓存的那些view封装好,convertView的setTag才 是将这些缓存起来供下次调用。当你的ListView里布局多样化的时候 ViewHolder的作用就有比较明显 的体现了。 当然了,单一模式的布局一样有性能优化的作用 只是不直观。 假如你2种模式的布局 当发生回收的时候 你会用setTag分别记录是哪两种 这两种模式会被封装到ViewHolder中进行保 存方便你下次使用。 VH就是个静态类 与缓存无关的*/ class ViewHolder{ TextView text1; TextView text2; TextView text3; } }
BaseAdapter
最新推荐文章于 2022-05-11 11:18:11 发布