我们一般在继承BaseView之后,
就会去重写getView方法,
那么getvVIew方法的运行机制是什么样子的呢?
getView 会在listView 来获取数据的时候调用,
public View getView(final int position, View convertView, ViewGroup parent),
其中position 定位当前加载的Item 位置,convertView则是我们将要详细介绍的参数,parent则是代表ListView.
ConvertView 实际上是一个可以重复利用的一个VIew,
我们在Adapter中放入了很多的数据,
然后ListView加载的时候,
会首先加载一面的数据,
从0-n,然后此时convertView 为null,
所以我们就会在开始的时候判断convertView 是否是空,如果不是空,
我们就回去获得convertView ,
然后给这个convertView附带绑定一个数据,
也就是convertView.setTag(viewHolder);//给convertView绑定一个ViewHolder
这里面的ViewHolder实际上使我们定义的一个内部类,
用来封装我们将要给这个convertView绑定的控件的集合,
但是,当我们滑过屏幕的一页时候,我们的convertView 就不是null了,
此时,convertView就会多出来
所以我们就要去重复利用他,
并给他已经绑定的viewHolder更改数据;
整个getView 最后就会返回这个带有数据的一项convertView ;
附上代码和测试图片
在这里插入代码片
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder=null;
if(convertView==null){
//表示第一次提取数据
convertView= LayoutInflater.from(context).inflate(R.layout.item,parent,false);
viewHolder =new ViewHolder();
viewHolder.textView=convertView.findViewById(R.id.textview);
convertView.setTag(viewHolder);//给convertView绑定一个ViewHolder
Log.v("postion is:",String.valueOf(position).toString());
}else{
viewHolder=(ViewHolder)convertView.getTag();
Log.v("convert is not null",String.valueOf(position).toString());
}
viewHolder.textView.setText(strings.get(position));
return convertView;
}
private class ViewHolder{
TextView textView;
}
首先是这样的输出,然后我们滑动屏幕;
就会出现动态变化的调出convertView
所以大概就是这样,刚学android ,求指教!!!