BaseAdapter的getView()方法
getView()是BaseAdapter的一个重要方法。为了研究getView()方法,使用了以下的类。
// apk列表
class list_apk extends BaseAdapter{ private Context ctx;
private List<item_apk> list_data; public list_apk(Context context){ ctx = context;
list_data = new ArrayList<item_apk>(); } @Override
public int getCount() {
// TODO Auto-generated method stub
return list_data.size();
} @Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return list_data.get(arg0);
} @Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return list_data.indexOf(arg0);
} @Override
public View getView(int position, View convertView, ViewGroup parent) { item_apk my_item; Log.i("position=", String.valueOf(position)); if (convertView==null)
{
Log.i("convertView=", "null");
my_item = new item_apk(ctx,
(String)list_data.get(position).txt_name.getText(),
(String)list_data.get(position).txt_flag.getText(),
list_data.get(position).img_apk.getDrawable());
}
else
{
Log.i("convertView=", convertView.toString());
my_item = (item_apk)convertView;
my_item.txt_name = list_data.get(position).txt_name;
my_item.txt_flag = list_data.get(position).txt_flag;
my_item.img_apk = list_data.get(position).img_apk;
}
return my_item; } public void addItem(String txt_name, String txt_flag, Drawable ico_apk)
{
list_data.add(new item_apk(ctx,txt_name,txt_flag,ico_apk));
} }
初次运行时截图如下:
此时LogCat的截图如下:
可见初次运行时,convertView都是null,此时初始化了13个View,每一个View对应列表里面的一行,即一个屏幕有13行,13个View。
把屏幕向下滑动,LogCat的截图如下:

注意com.hzhi.sysinfor.item_apk@407e26f8出现了两次,第一次显示position=13,第二次显示position=26,这是因为向下滑动时,该View(position=13)从屏幕上方消失了,然后出现在屏幕下方,显示position=26。
把屏幕向上滚动时LogCat的截图如下:

按理说向下滑动时,屏幕最后一行position=91消失了,此时应该在屏幕最上方显示position=78了才对,为什么显示position=79呢?这是因为滑动之前,position=79并没有被完全显示,滑动以后,首先重新完全显示了position=79,然后再显示position=78。
总结:不管怎样滑动屏幕,列表的第0行、第0+n行、第0+2*n行、......对应的都是同一个View,其中n是一个屏幕显示的行数,比如本例中第0、13、26、......对应的View都是com.hzhi.sysinfor.item_apk@407e26f8。
BaseAdapter的getView()方法的更多相关文章
- android 分享一个处理BaseAdapter,getView()多次加载的方法
		
一:BaseAdapter介绍 BaseAdapter是listview,gridview等列表,使用的数据适配器,它的主要用途是将一组数据传到ListView.Spinner.Gallery及Gri ...
 - [Android]ListView的Adapter.getView()方法中延迟加载图片的优化
		
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4139998.html 举个例子吧,以好友列表为例 ListVi ...
 - [Android]在Adapter的getView方法中绑定OnClickListener比较好的方法
		
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4146512.html 给ListView中每个item绑定点 ...
 - 在getView方法产生给用户item的视图以及数据
		
在getView方法产生给用户item的视图以及数据
 - Android LIstView初次创建getview方法执行多次问题
		
写listview优化的时候,发现Listview初次创建的时候会多次执行getView方法. <?xml version="1.0" encoding="utf- ...
 - android ListView 多次调用 getView方法
		
<ListView android:layout_width="match_parent" android:layout_heig ...
 - Android ListView getView()方法重复调用导致position错位
		
问题现状:Android ListView getView()方法重复调用导致position错位 解决办法:把ListView布局文件的layout_height属性改为fill_parent或者m ...
 - 自定义adapter 的getView方法被重复执行了n次的解决方法
		
1. getView执行的次数和你的getCount没有直接的关系 ,getCount和你listView里面的条目数量(行数量)有关系 ,getView方法执行次数取决于你屏幕上显示几个条目,比 ...
 - ListView / GirdView Adpater的getView方法,首项多次调用
		
通过Adapter为AbslistView提供内容是一个常见的做法:在ListView或者GridView的Adapter中的getView()方法中,加入一行日志,看getView()被调用的情况 ...
 
随机推荐
- web系统架构设计中需要知道的点(前端篇)
			
上周没写东西,这周写点互联网系统开发中需要了解的技术点,每个点都可以发散出去,连接更多的知识点,打算做个逐步细化的记录. 一个应用的整个生命周期中(生,老,病,死)都需要有一个整体规划. 前期 评估需 ...
 - ssl小结
			
有几篇不错的文章: http://www.cnblogs.com/pen-ink/archive/2011/01/17/1937680.html 这个应该是最简单的示例了. 不过,当两个passwor ...
 - Node.js与Sails~Model数据模型
			
回到目录 对于Sails来说,它的Model与数据库对应,不过它并没有采用目前比较流行的poco贫血模型,而是采用了类似DDD的充血模型,即它的数据实体里即有数据库字段(属性)而且还有方法,而模型里的 ...
 - PDO事务处理
			
PDO事务处理 2014-9-3 10:44:19 By jiancaigege==================================== 概要:将多条sql操作(增删改)作为一个操作单 ...
 - 2013 duilib入门简明教程 -- 总结 (20)
			
duilib的入门系列就到尾声了,再次提醒下,Alberl用的duilib版本是SVN上第个版本,时间是2013.08.15~ 这里给出Alberl最后汇总的一个工程,戳我下载,效 ...
 - Atitit hsv转grb  应该优先使用hsv颜色原则 方便人类
			
Atitit hsv转grb 应该优先使用hsv颜色原则 方便人类 1.1. 1.1.hsv色卡1 1.2. 从 HSV 到 RGB 的转换1 1.3. HSVtoRGBColorV22 1.1. ...
 - 理解与模拟一个简单web服务器
			
先简单说下几个概念,根据自己的理解,不正确请见谅. web服务器 首先要知道什么是web服务器,简单说web服务器就是可以使用HTTP传输协议与客户端进行通信的服务器.最初的web服务器只能用来处理静 ...
 - hibernate(一)第一个例子
			
一.创建一个java project名为HibernateDemo1 然后导入hibernate包,eclipse中具体操作: 点击菜单栏windows->preferences->jav ...
 - struts2获取web元素(request、session、application)
			
一.Action中获取 第一种方式: 通过ActionContext,这种方式取到的对象是Map类型 import java.util.Map; import com.opensymphony.xwo ...
 - Python小爬虫实例
			
有几个注意点: # -*- coding: utf-8 -*- # func passport jw.qdu.edu.cn import re import urllib# python3后urlli ...