在getview方法中有三个参数,起到优化的部分为ViewHolder的使用,主要方法setTag(),getTag()

适配器代码如下:

public class Myadapter extends BaseAdapter {
List<String> date;
Context context;

//构造方法
public Myadapter(List<String> date, Context context) {
this.date = date;
this.context = context;
}

//获取ListView的总条目数
@Override
public int getCount() {
return date.size();
}

//条目的索引
@Override
public Object getItem(int position) {
return date.get(position);
}

//获取条目的位置
@Override
public long getItemId(int position) {
return position;
}

/*
* 渲染(填充),调用data.size次
* position 索引
* convertView 条目的View
* parent :Listview
* */
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
//当convertView首次加载的时候
if (convertView == null) {
//获取打气筒
LayoutInflater inflater = LayoutInflater.from(context);
//填充单个Item
convertView = inflater.inflate(R.layout.item_main, null);
//获取Viewholder对象,减少findViewById的次数
holder = new ViewHolder();
//从填充的条目View中找到我们所关心的控件
holder.textView = convertView.findViewById(R.id.tv_my);
//将holder装进convertView的口袋
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag(http://www.my516.com);
}
//填充数据
holder.textView.setText(date.get(position));
return convertView;
}
//创建一个容器装要复用的View
static class ViewHolder {
TextView textView;
}
}

--------------------- 

posted on 2019-08-04 18:23  激流勇进1  阅读(701)  评论(0编辑  收藏  举报