一个 Android 版京东手机客户端(当前版本V5.0.1 build 28529)风格的级联地址选择器。
项目的 build.gradle 中:
allprojects { repositories { ... maven { url "https://jitpack.io"} } } 模块的 build.gradle 中:
dependencies { ... compile 'com.github.chihane:JDAddressSelector:1.1.4' } 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 dialog = new BottomDialog(context); dialog.setOnAddressSelectedListener(listener); dialog.show(); selector.setAddressProvider(new AddressProvider() { @Override public void provideProvinces(AddressReceiver<Province> addressReceiver) { List<Province> provinces = // blahblahblah addressReceiver.send(provinces); } @Override public void provideCitiesWith(int provinceId, AddressReceiver<City> addressReceiver) { new Thread(new Runnable() { @Override public void run() { List<City> cities = // blahblahblah addressReceiver.send(cities); } }).start(); } @Override public void provideCountiesWith(int cityId, AddressReceiver<County> addressReceiver) { addressApi.counties(cityId) .subscribeOn(Schedulers.io()) .subscribe(new Action1<List<County>>() { @Override public void call(List<County> counties) { addressReceiver.send(counties); } }, new Action1<Throwable>() { @Override public void call(Throwable throwable) { addressReceiver.send(null); } }); } @Override public void provideStreetsWith(int countyId, AddressReceiver<Street> addressReceiver) { // blahblahblah } }); Chihane Habana
