码迷,mamicode.com
首页 > 移动开发 > 详细

Android中BaseAdapter使用基础点

时间:2017-07-23 09:57:45      阅读:287      评论:0      收藏:0      [点我收藏+]

标签:article   proc   ack   导致   数据   数据传递   程序   repr   down   

Android中要填充一些控件(如ListView)经常须要用到Adapter来实现,经常使用的有ArrayAdapter,SimpleAdapter,
CursorAdapter,BaseAdapter,前几个都是继承自BaseAdapter的。

我平时经常使用的就是ArrayAdapter,再就是 BaseAdapter了,SimpleAdapter本身事实上也不算简单。所以能用SimpleAdapter的时候我一般都用了BaseAdapter。

至于CuesorAdapter我就差点儿没用过。今天事实上是有点忘了BaseAdapter怎么用了,在这记一下,以备后用, 也就主要是讲须要注意的东西。

1.BaseAdapter一般来说都是要重写构造方法的。

事实上BaseAdapter总体而言还是比較好使用的,主要就实现四个抽象方法。可是当时突然想不起来怎么把数据传递过去了,自然就想到了构造方法。看了曾经的代码,知道了。所以这里就有个结论:要用BaseAdapter就要重写构造方法。

2 .BaseAdapter中要有Context对像。

由于BaseAdapter要填充自己写的View。所以就要用到一个LayoutInflater对象,而要获得LayoutInflater对象就须要用到LayoutInflater.from(context);方法。所以由此看来。又要记住一个小结论:要使用BaseAdapter就要定义一个Context。

要用到这个Context对象,还是要传递了,那么进而再得到一个结论:要使用BaseAdapter要在构造方法中至少传入一个Context对象參数。

3 .要使用ViewHolder类,里面包括自己定义布局里的控件。

我们知道ListView之类的须要优化。不然的话一直填充比較占内存,极端的时候可能发生内存不足的情况导致程序FC,所以就自定一个内部类ViewHolder来进行优化。所以我们再次得到一个结论:要使用BaseAdapter就自己定义一个ViewHolder类。用到的时候就实例化一个ViewHolder对象。
当convertView== null时。通过convertView = inflater.inflate(R.layout.list_item, null);初始化布局,然后初始化布局中的控件,之后调用

convertView.setTag(viewHolder);
else{
     viewHolder= (ViewHolder) convertView.getTag();
 }

就是又一次获得组件。而不是又一次初始化。

Android中BaseAdapter使用基础点

标签:article   proc   ack   导致   数据   数据传递   程序   repr   down   

原文地址:http://www.cnblogs.com/wzjhoutai/p/7223579.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!