登录 立即注册
安币:

安卓巴士 - 安卓开发 - Android开发 - 安卓 - 移动互联网门户

查看: 141|回复: 0

热门城市地址或者联系人选择,右侧快速索引导航,分割线悬浮效果,按照首字母分组排序

[复制链接]

10

主题

85

帖子

1086

安币

Android大神

Rank: 6Rank: 6

发表于 2019-1-28 10:05:02 | 显示全部楼层 |阅读模式
如果对本篇文章感兴趣,请前往,原文地址:http://www.apkbus.com/blog-633248-79453.html

# AddressSelect在一些项目中经常会用到把一个列表的数据源按照一定的顺序分组排序例如联系人,日期,地址选择等。  特别是在一些电商和销售类的app中基本是必备功能,本项目就是收集了项目中经常需要的地址选择Demo,带搜索功能https://github.com/sky8650/AddressSelect# Uasage## 从数据库读取数据源```Observable.just(dbManager).map(new Function() {            @Override            public Object apply(DBManager dbManager) throws Exception {                sqLiteDatabase = dbManager.initDataBase(getPackageName());                String[] columns = new String[]//列属性                        {"cityType", "cityID", "cityName", "parentId"};                String selection = "cityType=?";                String[] selectionArgs = new String[]{"3"};//type为3时查询的是市                List cityVoList = dbManager.query(sqLiteDatabase, columns, selection, selectionArgs);                sqLiteDatabase.close();                return cityVoList;            }        }).compose(RxUtils.schedulersTransformer()).subscribe(new Consumer() {            @Override            public void accept(List cityVoList) throws Exception {                doData(cityVoList);            }        });```## 从数据库读取数据源```Observable.just(dbManager).map(new Function() {            @Override            public Object apply(DBManager dbManager) throws Exception {                sqLiteDatabase = dbManager.initDataBase(getPackageName());                String[] columns = new String[]//列属性                        {"cityType", "cityID", "cityName", "parentId"};                String selection = "cityType=?";                String[] selectionArgs = new String[]{"3"};//type为3时查询的是市                List cityVoList = dbManager.query(sqLiteDatabase, columns, selection, selectionArgs);                sqLiteDatabase.close();                return cityVoList;            }        }).compose(RxUtils.schedulersTransformer()).subscribe(new Consumer() {            @Override            public void accept(List cityVoList) throws Exception {                doData(cityVoList);            }        });```## 把数据源进行排序``` Observable.fromIterable(cityVoList).                toSortedList(new Comparator() {            @Override            public int compare(CityVo o1, CityVo o2) {                //a-z排序                String a = o1.getPinYin();                String b = o2.getPinYin();                return a.compareTo(b);            }        }).subscribe(new Consumer() {          @Override          public void accept(List cityVoList) throws Exception {              pickCityAdapter.addHeaderView(headerView);              pickCityAdapter.setNewData(cityVoList);              //添加了头部,所以keys要从1开始              keys.put(1, "A");              letterIndexes.put("#", 0);              letterIndexes.put("A", 1);              for (int i = 0; i < cityVoList.size(); i  ) {                  if (i < cityVoList.size() - 1) {                      //首字母不同,设为ky                      String pre = cityVoList.get(i).getPinYin().substring(0, 1).toUpperCase();                      String next = cityVoList.get(i   1).getPinYin().substring(0, 1).toUpperCase();                      if (!pre.equals(next)) {                          keys.put(i   2, next);                          letterIndexes.put(next, i   2);                      }                  }              }              floatingItemDecoration.setKeys(keys);          }      });```详细地址:   https://github.com/sky8650/AddressSelect  继续阅读全文



想在安卓巴士找到更多优质博文,可移步博客区

如果对本篇文章感兴趣,请前往,
原文地址:
http://www.apkbus.com/blog-633248-79453.html
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站长推荐

通过邮件订阅最新安卓weekly信息
上一条 /4 下一条

下载安卓巴士客户端

全国最大的安卓开发者社区

广告投放| 广东互联网违法和不良信息举报中心|中国互联网举报中心|下载客户端|申请友链|手机版|站点统计|安卓巴士 ( 粤ICP备15117877号 )

快速回复 返回顶部 返回列表