文档章节

BaseAdapter的getView()方法

M
 MSTK
发布于 2014/08/05 17:16
字数 456
阅读 43
收藏 0

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

本文转载自:http://www.cnblogs.com/mstk/p/3433002.html

M
粉丝 0
博文 43
码字总数 0
作品 0
成都
私信 提问
Android ListView实现任意layout

SimpleAdapter adapter = new SimpleAdapter(this, getData(),R.layout.timenotesitemleft, new String[] { "text1", "text2","text3" }, new int[] { R.id.textView2, R.id.textView3,R.id.......

Mediv
2014/10/17
289
2
ListView使用BaseAdapter与ListView的优化

在ListView的使用中,有时候还需要在里面加入按钮等控件,实现单独的操作。也就是说,这个ListView不再只是展示数据,也不仅仅是这一行要来处理用户的操作,而是里面的控件要获得用户的焦点。...

蜗牛TT
2012/06/12
2.6K
1
Android的viewHolder模式

深入浅出(这部分总结的非常好) ListView之BaseAdapter的基本使用以及ViewHolder模式。 话说开发用了各种Adapter之后感觉用的最舒服的还是BaseAdapter,尽管使用起来比其他适配器有些麻烦,...

xiaole0313
2016/08/16
0
0
Android ListView使用BaseAdapter与ListView的优化

Adapter在Android应用程序中起着非常重要的作用,应用也非常广泛,它可看作是数据源和UI组件之间的桥梁,其中Adapter、数据和UI之间的关系,可以用下图表示: BaseAdapter就Android应用程序中...

风清扬-深圳
2015/11/18
149
0
Android 简单的MyBaseAdapter

在Android开发中经常用到ListView列表,于是Adapter也就比较常用的了, 而实际项目中稍微复杂点的基本都会用到BaseAdapter, 大家都知道继承自BaseAdapter必须要重写getCount(), getItem(), ...

新年
2015/08/12
136
0

没有更多内容

加载失败,请刷新页面

加载更多

Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
5
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部