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

7cab4d03cdecd7d8bb38cb89dbf87e0f.png

添加依赖

项目的 build.gradle 中:

allprojects {

repositories {

...

maven { url "https://jitpack.io"}

}

}

模块的 build.gradle 中:

dependencies {

...

compile 'com.github.chihane:JDAddressSelector:1.1.3'

}

使用方法

使用原始视图

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

BottomDialog dialog = new BottomDialog(context);

dialog.setOnAddressSelectedListener(listener);

dialog.show();

使用自定义数据源

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

}

});

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐