Android学习笔记(五) BaseAdapter
本人是在使用Listview时,由于需要自定义ListView的Item,因此需要自己写一个Adapter,使用到了BaseAdapter。对BaseAdapter中的getItem()以及getItemId()略感疑惑,因此从网上查找资料得出自己的见解:
参考了这篇博文:http://www.cnblogs.com/qzxia/archive/2010/10/25/1860602.html
getItem并不是由Android系统主动进行调用,而是提供了一个接口方便我们在编写item的onClick方法时方便数据的传递。
public Object getItem(int position)的用处在于重写onItemLongClick(AdapterView<?> parent, View view, int position, long id)的时候,可以通过AdapterView的getItemAtPosition(position)方法获取Adapter里面getItem返回的item数据,从而简化了开发过程。
但是上面的博文还有遗漏的地方,public long getItemId(int position)返回的id不仅仅是给我们提供了getSelectedId()方法调用,而且当我们重写了getItemId(int position)后,所返回的值实际上也是onItemLongClick(AdapterView<?> parent, View view, int position, long id)里面的id的值,这里的id起到的作用也许是一个自定义item的Id的作用,并不一定所有的item都能保存一个整数的id,因此特意再加入getItemId方法,然后可以在onClick方法中获取到当前点击到的item的id,从而完成更多方便的操作。
adapter中还包含getViewTypeCount,它是指listview的item中会有多少种不同的view,可以通过getItemViewType获取view的type,从而根据这个type构建View,其中要注意的是type应是从0开始的整数,因为系统也会调用getViewTypeCount方法建立View的管理结构;