Android开发点点滴滴——ListView(续)

来源:互联网 发布:淘宝卖电脑的哪家店好 编辑:程序博客网 时间:2024/06/12 01:53

1.自定义ListView 重载BaseAdapter

之前在使用ListView时,基本上选用的android已有的适配器(Adapter),优点是:对于简单的实现一些功能来说,用起来比较方便简单,缺点是:ui看起来也很单调,不能定制布局。

为了能自定义listview的ui,可以自己写一个Adapter来继承BaseAdapter,只要重载几个方法即可。

具体来说 就是重载

getCount() 

getItem() 

getItemId() 

getView()

四个方法,每个方法代表的含义如下:

class MyAdapter extends BaseAdapter{@Overridepublic int getCount() {//返回数据集中的条目数,简单来说就是决定listview的行数 (一般的 return 数据集.size();)return 0;}@Overridepublic Object getItem(int position) {//获取数据集中与指定索引对应的数据项(一般的 return position;)return null;}@Overridepublic long getItemId(int position) {//取在列表中与指定索引对应的行id,也就是返回那一行(一般的 return position;)return 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {//返回列表项的视图 这个是最关键的,基本都是重写这个方法,自定义UI,最后返回view即可return null;}}

对于getView写法,本人不才,基本都是直接写,没有任何处理,但是推荐使用 缓存convertView方式viewHolder方式来实现。

2.使用Adapter的notifyDataSetChanged()方法动态更新ListView(UI)

notifyDataSetChanged方法通过一个外部的方法控制,如果适配器的内容改变时,需要强制调用getView()来刷新每个Item的内容。

值得注意的如果实在ui线程之外使用notifyDataSetChanged来更新ListView,需要使用Handler方式或者,或者AsyncTask方式