ListView组件学习笔记

ListView是Android中一个比较实用的组件,使用它可以实现数据的列表显示。

Adapter

ListView的外观是通过给ListView设置各种Adapter来完成的,同一个数据集使用不同的Adapter就会有不同的显示效果。Android给我们提供了很多常用的Adapter。

1  常用适配器

Adapter

含义

ArrayAdapter<T>

用来绑定一个数组,支持泛型操作

SimpleAdapter

用来绑定在xml中定义的控件对应的数据

SimpleCursorAdapter

用来绑定游标得到的数据

BaseAdapter

通用的基础适配器

 但是,如果要显示的数据非常复杂,或者要实现类似qq聊天界面那种不同目标使用不同界面的地显示方式或者,实现对于事件的响应不只局限在一个行单位的情况,我们就需要自定义自己的Adapter。listview加载adapter过程是这样的.

1 先判断adapter 有多少数据项,根据这个数据确定有多少item. 
2 确定每个item里加载哪个View. 
3 把View里加载要显示的数据.

所以基本上自定义的方法就这个:

1.

  1. //适配器根据getCount()函数来确定要加载多少项  
  2.     @Override  
  3.     public int getCount() {  
  4.         return list.size();  
  5.     }  

2. 

  1. /* 
  2.  * 在Adapter中有一个关键方法,当列表里的每一项要显示到界面时,都会调用这个方法一次,并返回一个view
  3.  * 界面扩展以及事件扩展都在这里实现。但是要避免尽量不要讲耗时操作放到此方法中,否则会导致界面加载过慢
  4.  */  
  5.     @Override  
  6.     public View getView(int paramInt, View paramView, ViewGroup paramViewGroup) {  
  7.         //得到列表样式的view对象  
  8.         paramView=LayoutInflater.from(context).inflate(R.layout.item, null);  
  9.         //通过view来得到Item中的每个控件的操作权  
  10.         TextView name = (TextView)paramView.findViewById(R.id.name);  
  11.         TextView sex = (TextView)paramView.findViewById(R.id.sex);  
  12.         TextView age = (TextView)paramView.findViewById(R.id.age);  
  13.         //获得list里面的第paramInt个对象,并把值赋给每个控件  
  14.         People people = list.get(paramInt);  
  15.         name.setText(people.name);  
  16.         sex.setText(people.sex);  
  17.         age.setText(people.age);  
  18.         //把一项返回,加载这个View  
  19.         return paramView;  
  20.     }  
3.

  1.  /*
  2.   *简单重载这些方法
  3.   */
  4.     @Override  
  5.     public Object getItem(int paramInt) {  
  6.           
  7.         return list.get(paramInt);  
  8.     }  
  9.   
  10.     @Override  
  11.     public long getItemId(int paramInt) {  
  12.         return paramInt;  
  13.     } 

点击事件

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

http://hi.baidu.com/lvqiyong/item/8fe1bc3f8a9d09c82e8ec231

http://www.pocketdigi.com/20101102/139.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值