实现了一个城市列的小demo
其中包有:
1.列表中字母标题栏item悬浮效果
2.右侧a-z字母定位
3.城市检索
效果图(录屏有点问题):
将城市数据转换成能显示在列表中的正确数据:
城市列表中的数据有两种,一种是正常的城市数据,另一种是字母标题数据。在城市列表经过首字母排序后,列表中华每个城市首字母与上个城市首字母不同,就这他们中间插入一项字母标题数据。
private List<City> filledData(List<City> array) {
// 实例化汉字转拼音类
for (int i = 0; i < array.size(); i++) {
array.get(i).setType(City.ITEM);// 该城市是正常的城市数据
String sortString = array.get(i).getLetter().substring(0, 1).toUpperCase();
// 正则表达式,判断首字母是否是英文字母
if (sortString.matches("[A-Z]")) {
array.get(i).setFirstLetter(sortString.toUpperCase());
} else {
array.get(i).setFirstLetter("#");
}
}
Collections.sort(array);
// 给列表插入一下字母标题栏
array.add(0, new City("0", array.get(0).getFirstLetter(), array.get(0).getFirstLetter(), array.get(0).getFirstLetter(), array
.get(0).getFirstLetter(), City.SECTION));
for (int i = 1; i < array.size(); i++) {
if (!array.get(i).getFirstLetter().equals(array.get(i - 1).getFirstLetter())) {
array.add(i, new City("" + i, array.get(i).getFirstLetter(), array.get(i).getFirstLetter(), array.get(i).getFirstLetter(),
array.get(i).getFirstLetter(), City.SECTION));//插入一项字母标题数据
}
}
return array;
}
源码下载