JDAddressSelector

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

  • Owner: chihane/JDAddressSelector
  • Platform:
  • License:: MIT License
  • Category::
  • Topic:
  • Like:
    2
      Compare:

Github stars Tracking Chart

JDAddressSelector

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

image

添加依赖

项目的 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

BottomDialog dialog = new BottomDialog(context);
dialog.setOnAddressSelectedListener(listener);
dialog.show();

使用自定义数据源

selector.setAddressProvider(new AddressProvider() {
    @Override
    public void provideProvinces(AddressReceiver<Province> addressReceiver) {
        List<Province> provinces = addressApi.provincesFromDatabase();
        addressReceiver.send(provinces);    
    }

    @Override
    public void provideCitiesWith(int provinceId, AddressReceiver<City> addressReceiver) {
        new Thread(() -> {
            List<City> cities = addressApi.citiesSync(provinceId);
            addressReceiver.send(cities);
        }).start();
    }

    @Override
    public void provideCountiesWith(int cityId, AddressReceiver<County> addressReceiver) {
        addressApi.counties(cityId)
                .subscribeOn(Schedulers.io())
                .subscribe(
                    counties -> addressReceiver.send(counties),
                    throwable -> addressReceiver.send(null)
                );
    }

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

关于我

Chihane Habana

许可证

MIT License

Main metrics

Overview
Name With Ownerchihane/JDAddressSelector
Primary LanguageJava
Program languageJava (Language Count: 1)
Platform
License:MIT License
所有者活动
Created At2016-05-13 07:56:04
Pushed At2022-03-31 06:23:44
Last Commit At2022-03-31 14:23:44
Release Count6
Last Release Name1.1.4 (Posted on )
First Release Name1.0.0 (Posted on )
用户参与
Stargazers Count602
Watchers Count13
Fork Count128
Commits Count46
Has Issues Enabled
Issues Count36
Issue Open Count6
Pull Requests Count1
Pull Requests Open Count0
Pull Requests Close Count0
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private