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(); 
 }

就是重新获得组件,而不是重新初始化。


本文参考链接:https://blog.csdn.net/q1406689423/article/details/50478262
评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

Java多线程中Lock锁如何使用