Android中ListView布局及BaseAdapter的常规简单用法
如图先创建一个SearchFlightsAdapter适配器,其中有两个参数上下文,就是当前页面的activity,json形式的数组。
在创建的适配器要继承BaseAdapter
之后,还要设置对应的两个参数,将数据传入MyBaseAdapter中。其中this.jsonArray = jsonArray;的意思是将传入的形参赋值给我们的私有变量以供使用。activity是在后面要调用到,
一个TextView显然满足不了我们的需要,这也完全不能显示BaseAdapter的全能性。那接下来,就来展示一下如何用BaseAdapter显示一个自定义布局。
对BaseAdapter我们要了解这四个方法:
getCount, getItem, getItemId, getView
getCount : 要绑定的条目的数目,比如格子的数量(直接返回数组的长度)
getItem : 根据一个索引(位置)获得该位置的对象
getItemId : 获取条目的id
getView : 获取该条目要显示的界面
可以简单的理解为,adapter先从getCount里确定数量,然后循环执行getView方法将条目一个一个绘制出来,所以必须重写的是getCount和getView方法。而getItem和getItemId是调用某些函数才会触发的方法,如果不需要使用可以暂时不修改。
因此,接下来,我们应该写getView
首先新建一个layout,我命名为list_search,这个就是我们每个条目要展示的布局
接下来修改getView方法,让它显示我们这个item布局
LayoutInflater是用来加载布局的,用LayoutInflater的inflate方法就可以将你的item布局绘制出来。其中getView方法中的三个参数,position是指现在是第几个条目;convertView是旧视图,就是绘制好了的视图;parent是父级视图,也就是ListView之类的。
用inflate方法绘制好后的view最后return返回给getView方法就可以了。