京东 Android 客户端样式的级联地址选择器

[复制链接]
来自: MrlLee 分类: Android精品源码 上传时间: 2016-7-5 15:44:54
Tag:

项目介绍:

游客,如果您要查看本帖隐藏内容请回复

一个 Android 版京东手机客户端(当前版本V5.0.1 build 28529)风格的级联地址选择器。



image



添加依赖



项目的

[Java] 查看源文件 复制代码
build.gradle
中:



[Java] 查看源文件 复制代码
allprojects {
    repositories {
        ...
        maven { url \"https://jitpack.io\"}
    }
}


模块的

[Java] 查看源文件 复制代码
build.gradle
中:



[Java] 查看源文件 复制代码
dependencies {
    ...
    compile 'com.github.chihane:JDAddressSelector:1.1.3'
}


使用方法



使用原始视图



[Java] 查看源文件 复制代码
AddressSelector selector = new AddressSelector(context);
selector.setOnAddressSelectedListener(new AddressSelector.OnAddressSelectedListener() {
    @Override
    public void onAddressSelected(Province province, City city, County county, Street street) {
        // blahblahblah
    }
});

View view = selector.getView();
// frameLayout.addView(view)
// new AlertDialog.Builder(context).setView(view).show()
// ...


BottomDialog



[Java] 查看源文件 复制代码
BottomDialog dialog = new BottomDialog(context);
dialog.setOnAddressSelectedListener(listener);
dialog.show();


使用自定义数据源



[Java] 查看源文件 复制代码
selector.setAddressProvider(new AddressProvider() {
    @Override
    public void provideProvinces(AddressReceiver addressReceiver) {
        List provinces = // blahblahblah 
        addressReceiver.send(provinces);    
    }

    @Override
    public void provideCitiesWith(int provinceId, AddressReceiver addressReceiver) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                List cities = // blahblahblah
                addressReceiver.send(cities);
            }
        }).start();
    }

    @Override
    public void provideCountiesWith(int cityId, AddressReceiver addressReceiver) {
        addressApi.counties(cityId)
                .subscribeOn(Schedulers.io())
                .subscribe(new Action1>() {
                    @Override
                    public void call(List counties) {
                        addressReceiver.send(counties);
                    }
                }, new Action1() {
                    @Override
                    public void call(Throwable throwable) {
                        addressReceiver.send(null);
                    }
                });
    }

    @Override
    public void provideStreetsWith(int countyId, AddressReceiver addressReceiver) {
        // blahblahblah 
    }
});



相关源码推荐:

我来说两句
所有评论(192)
guopj2012 2016-7-5 16:08:59
很想找这么一个东西,很不错
回复
guopj2012 2016-7-5 16:37:38
楼主的对话框很好看,谢谢分享
回复
Frank_z 2016-7-5 16:55:49
学习...学习...
回复
guopj2012 2016-7-5 17:09:50
虽不明,但觉厉!
回复
tylz 2016-7-5 17:23:34
mark,收藏了
回复
chaoyue 2016-7-5 17:55:45
好好 学习了 确实不错
回复
belle 2016-7-5 18:25:25
帮帮顶顶!!
回复
9684 3 0
代码贡献英雄榜
用户名 下载数
联系我们
首页/微信公众账号投稿
帖子代码编辑/版权问题
QQ:435399051,1294855032
如何获得代码达人称号?
如何成为签约作者?
领先的中文移动开发者社区
18620764416
7*24全天服务
意见反馈:1294855032@qq.com

扫一扫关注我们

Powered by Discuz! X3.2© 2001-2019 Comsenz Inc.( 粤ICP备15117877号 )