【Android学习笔记】ListView适配器的基本理解

对于ListView和ScrollView,个人一直是比较纠结的。

毕竟是初学者,开始觉得ScrollView可以直接把View给添加进去,不需要搞Adapter来适配,好像挺“方便”的!?

后来逐渐的觉得ListView在使用上还是有其比ScrollView方便之处的。


刚接触Adapter的时候,肯定觉得挺头疼的,

特别是又恰巧是刚接触Android的时候,

完全不理解这样实现的机制是怎样的,

后来通过一些查阅和思考,大致明白了一些关于ListView和Adapter之间的一些关系吧!


OK!一步一步来!往简单的说,从Adapter开始!

(其实这个网上的资料非常多)

我们一般都会弄一个内部类继承BaseAdapter,然后通过修改其@Override的方法来达到我们的目的!

Adapter适配器是做什么用的呢?

我的理解就是,ListView通过适配器,理解我们要对ListView里加入什么内容,

而我们在适配器里@Override的方法里,就是让我们写上我们要告诉这个ListView的一些基本内容!


写一个private class "类名称" extends BaseAdapter{}

然后eclipse就会提示你要添加unimpliment的方法。

最好,先把这个类的构造函数写好!

构造函数需要什么内容呢?

我建议是要有一个Context,为什么?下面会告诉你!


好,先说每个方法!

首先是getCount()方法,这个方法要返回你要添加进ListView里的东西的总数,

也就是要告诉ListView,我添加进列表里的东西有多少!

我这里的mArray就是一个简单的List<String>,

可能有人会问,我为什么不直接返回mListView的长度呢?

这里我是这么考虑的,就是我们的ListView可能会添加”头“和”尾“,来进行一些更新之类的交互,

就像微博之类的下拉刷新或者到底后加载,所以干脆直接用我们添加的内容的长度(记得确保已经初始化哦)!

@Override
		public int getCount() {
			return mArray == null ? 0 : mArray.size();
		}


接下来就是getItem(int position)方法了,这个是做什么呢?

ListView要加载内容,肯定要获得内容才可以加载,对吧!

这个方法就是要让ListView可以通过一个position来获得我们要添加在相应位置的内容的!

内容是什么?当然是刚才mArray里相应位置的东西啦!

		@Override
		public Object getItem(int position) {
			return mArray.get(position);
		}


这个getItemId(int position)方法,应该是为了方便ListView进行管理的,

简单说,我们就按原来的position来让他管理,原本是几就是几,省事,直接返回position!

		@Override
		public long getItemId(int position) {
			return position;
		}


OK,到重头戏了!getView()方法!

这里要实现的东西就比较多了,我就不具体贴出来了!

这个也很好理解,个人的理解就是ListView要方便的得到自己里面的每个View嘛!

(不然人家怎么知道你的mArray里的数据,要怎么填入ListView里的每个View,对吧!)

再说明白一些,例如我是一个ListView!

我问你,我要在第一个位置position填充你的内容,我把我第一个位置的”容器“给你,你告诉我要怎么填?

OK,代码部分就是你告诉我的了!

@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			return null;
		}

这里面一般我们会怎么做呢?

一般,我们添加到ListView里的每个View都是xml定义好的!

好,一开始构造过来的Context就有用了!

通过LayoutInflater.from(context).inflate(R.layout.你定义的xml,null);

获得你要添加进去的View!用来干嘛?当然赋给convertView啦!

如果我们定义的xml里有一个TextView,好!

那我们就TextView tTextView = (TextView)convertView.findViewById(R.id.你的textview);

这样就可以通过position,在mArray里找到我们相应位置的内容,让TextView显示出来!

当然,最后要return convertView!

把这个我们包装好的View给回ListView,让它在列表里显示!

Adapter适配器方面的笔记就做到这里!


接下来到Activity里的内容,

首先,你的Activity里必须要有一个ListView,甭管你是xml里定义还是代码加进去。

findViewById就不说了!

		mListView.setAdapter(mAdapter);
		mListView.setOnScrollListener(this);
		mListView.setOnItemClickListener(this);

这三句是什么意思?

第一句是让这个ListView和你的适配器关联在一起!

第二第三句,由于我的Activity implement了这2个接口,所以直接关联this即可!

OnScrollListener呢,就是管理ListView滑动的,有2个@Override!以后再记录了。

OnItemClick就很好理解,就是里面的每个Item的点击!有一个@Override,也以后再讲!


OK,这次笔记就大概到这里!无论是ListView还是ScrollView,能达到目的,自己用起来好用,就是最好的! 



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值