Android中的系统联系人会根据手机中联系人的姓氏的首字母进行分组排序。并在界面的最顶端显示当前首的分组。
我们需要使用的就是SectionIndexer,它能够有效的帮助我们对分组进行控制。由于SectionIndexer是一个接口,你可以自定义一个子类来实现SectionIndexer,不过自己再写一个SectionIndexer实在是太麻烦了。这里我们直接使用Android提供好的AlphabetIndexer,用它来实现联系人分组功能已经足够了。
AlphabetIndexer的构造函数需要传入三个参数,第一个参数是cursor,第二个参数是sortedColumnIndex整形,第三个参数是alphabet字符串。其中cursor就是把我们从数据库中查出的游标传进去,sortedColumnIndex就是指明我们使用那一列进行排序的,而alphabet则是指定字母表排序规则,比如:“ABCDEFGHIJKLMNOPQRSTUVWXYZ”。有了AlphaBetIndexer,我们就可以通过它的getPositionforSection和getPSectionForPosition方法,找出当前位置所在的分组和当前分组所在的位置,从而实现类似于系统联系人的分组导航和挤压动画效果。