android:fadingEdge=“none” >
布局文件很简单,里面放入了一个 ListView,用于展示联系人信息。另外还在头部放了一个 LinearLayout,里面包含了一个 TextView,它的作用是在界面头部始终显示一个当前分组。
二
然后新建一个 contact_item.xml 的布局,这个布局用于在 ListView 中的每一行进行填充,代码如下:
在这个布局文件中,首先是放入了一个和前面完成一样的分组布局,因为不仅界面头部需要展示分组,在每个分组内的第一个无素之前都需要展示分组布局。然后是加入一个简单的 LinearLayout,里面包含了一个 ImageView 用于显示联系人头像,还包含一个 TextView 用于显示联系人姓名。
这样我们的布局文件就全部写完了,下面开始来真正地实现功能。
先从简单的开始,新建一个 Contact 实体类:
public class Contact {
/**
- 联系人姓名
*/
private String name;
/**
- 排序字母
*/
private String sortKey;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSortKey() {
return sortKey;
}
public void setSortKey(String sortKey) {
this.sortKey = sortKey;
}
}
这个实体类很简单,只包含了联系人姓名和排序键。
接下来完成联系人列表适配器的编写,新建一个 ContactAdapter 类继承自 ArrayAdapter,加入如下代码:
public class ContactAdapter extends ArrayAdapter {
/**
- 需要渲染的item布局文件
*/
private int resource;
/**
- 字母表分组工具
*/
private SectionIndexer mIndexer;
public ContactAdapter(Context context, int textVie