ListView是Android中一个比较实用的组件,使用它可以实现数据的列表显示。
Adapter
ListView的外观是通过给ListView设置各种Adapter来完成的,同一个数据集使用不同的Adapter就会有不同的显示效果。Android给我们提供了很多常用的Adapter。
表1 常用适配器
Adapter | 含义 |
ArrayAdapter<T> | 用来绑定一个数组,支持泛型操作 |
SimpleAdapter | 用来绑定在xml中定义的控件对应的数据 |
SimpleCursorAdapter | 用来绑定游标得到的数据 |
BaseAdapter | 通用的基础适配器 |
1 先判断adapter 有多少数据项,根据这个数据确定有多少item.
2 确定每个item里加载哪个View.
3 把View里加载要显示的数据.
所以基本上自定义的方法就这个:
1.
- //适配器根据getCount()函数来确定要加载多少项
- @Override
- public int getCount() {
- return list.size();
- }
2.
- /*
- * 在Adapter中有一个关键方法,当列表里的每一项要显示到界面时,都会调用这个方法一次,并返回一个view
- * 界面扩展以及事件扩展都在这里实现。但是要避免尽量不要讲耗时操作放到此方法中,否则会导致界面加载过慢
- */
- @Override
- public View getView(int paramInt, View paramView, ViewGroup paramViewGroup) {
- //得到列表样式的view对象
- paramView=LayoutInflater.from(context).inflate(R.layout.item, null);
- //通过view来得到Item中的每个控件的操作权
- TextView name = (TextView)paramView.findViewById(R.id.name);
- TextView sex = (TextView)paramView.findViewById(R.id.sex);
- TextView age = (TextView)paramView.findViewById(R.id.age);
- //获得list里面的第paramInt个对象,并把值赋给每个控件
- People people = list.get(paramInt);
- name.setText(people.name);
- sex.setText(people.sex);
- age.setText(people.age);
- //把一项返回,加载这个View
- return paramView;
- }
- /*
- *简单重载这些方法
- */
- @Override
- public Object getItem(int paramInt) {
- return list.get(paramInt);
- }
- @Override
- public long getItemId(int paramInt) {
- return paramInt;
- }
点击事件
ListView常用到的事件主要有,每条数据的点击事件android.widget.AdapterView.OnItemClickListener,还有一个长按事件(长按条目出现一个ContextMenu)。
关于OnItemClickListener接口,其中关键方法只有一个:public void onItemClick (AdapterView<?> parent, View view, int position, long id )
// parent 相当于listview 适配器的一个指针,可以通过它来获得listview里装着的一切东西,再通俗点就是说就是这货可以强转成ListView。
// view 是你点的item的view句柄,就是你可以用这个view,来获得item里的控件的id后操作控件。
// position 是你点的item在适配器里的位置(生成listview时,适配器一个一个的做item,然后把他们按顺序排好队,在放到listview里,而你点的item是第position号做好的)
// id 是你点的item在listview 里的位置(第几行),大部分时候position和id的值是一样的。
关于长按事件,先判断adapter 有多少数据项,根据这个数据确定有多少item.
此处参考文章(里面有例子):
http://blog.sina.com.cn/s/blog_618199e60101071l.html