Retrofit+RxJava+lambda使用示例

Retrofit+RxJava+lambda使用示例

废话不说先上Gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
        classpath 'me.tatarka:gradle-retrolambda:2.4.+'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
allprojects {
    repositories {
        jcenter()
    }
}



repositories {
    mavenCentral()
    maven {
       url "http://repo.maven.apache.org/maven2"
    }
}
apply plugin: 'com.android.application'
apply plugin: 'retrolambda'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    retrolambda {
        System.getenv("JAVA8_HOME")
        System.getenv("JAVA7_HOME")
        javaVersion JavaVersion.VERSION_1_7
    }

    defaultConfig {
        applicationId "com.as.testkaixin"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'
    compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'
    compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta2'


    compile 'io.reactivex:rxjava:1.1.0'
    compile 'io.reactivex:rxandroid:1.1.0'

    compile 'com.jakewharton:butterknife:7.0.1'

}

2 导入包后首先是Retrofit同步模式访问网络

public static final String API_URL = "https://api.github.com";

public static class Contributor {
    public final String login;
    public final int contributions;

    public Contributor(int contributions, String login) {
        this.contributions = contributions;
        this.login = login;
    }
}

public interface GitHub{
    @GET("/repos/{owner}/{repo}/contributors")
    Call<List<Contributor>> contributors (@Path("owner") String owner, @Path("repo") String repo);
}

public static void main(String... args) throws IOException {
    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(API_URL)
            .addConverterFactory(GsonConverterFactory.create()).build();
    GitHub gitHub = retrofit.create(GitHub.class);
    Call<List<Contributor>> call = gitHub.contributors("square", "retrofit");
    List<Contributor> contributors = call.execute().body();
    for (Contributor contributor : contributors) {
        System.out.println(contributor.login + " (" + contributor.contributions + ")");
    }
}

3 其次是Retrofit异步模式访问网络

public static final String API_URL = "https://api.github.com";

public static class Contributor {
    public final String login;
    public final int contributions;

    public Contributor(int contributions, String login) {
        this.contributions = contributions;
        this.login = login;
    }
}

public interface GitHub{
    @GET("/repos/{owner}/{repo}/contributors")
    Call<List<Contributor>> contributors (@Path("owner") String owner, @Path("repo") String repo);
}

public static void main(String... args) throws IOException {
    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(API_URL)
            .addConverterFactory(GsonConverterFactory.create()).build();
    GitHub gitHub = retrofit.create(GitHub.class);
    Call<List<Contributor>> call = gitHub.contributors("square", "retrofit");

    call.enqueue(new Callback<List<Contributor>>() {
        @Override
        public void onResponse(Response<List<Contributor>> response, Retrofit retrofit) {
            List<Contributor> contributors =response.body();
            for (Contributor contributor : contributors) {
                System.out.println(contributor.login + " (" + contributor.contributions + ")");
            }
        }

        @Override
        public void onFailure(Throwable t) {
             System.out.println("erro");
        }
    });

}

4 最后是

Retrofit+RxJava+lambda

public static final String API_URL = "https://api.github.com";

public static class Contributor {
    public final String login;
    public final int contributions;

    public Contributor(int contributions, String login) {
        this.contributions = contributions;
        this.login = login;
    }
}

public interface GitHub{
    @GET("/repos/{owner}/{repo}/contributors")
    Observable<List<Contributor>> contributors (@Path("owner") String owner, @Path("repo") String repo);
}

public static void main(String... args) throws IOException {
    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(API_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
            .build();

    GitHub gitHub = retrofit.create(GitHub.class);
    Observable<List<Contributor>> observable = gitHub.contributors("square", "retrofit");
    observable.subscribe(new Action1<List<Contributor>>() {
        @Override
        public void call(List<Contributor> contributors) {
            for (Contributor contributor : contributors) {
                System.out.println(contributor.login + " (" + contributor.contributions + ")");
            }
        }
    });
    System.out.println("================4lambda======================================");
    observable.subscribe(contributors -> {
        for (Contributor contributor : contributors) {
            System.out.println(contributor.login + " (" + contributor.contributions + ")");
        }
    });
    System.out.println("================4lambda from======================================");
    observable.subscribe(contributors -> {
        Observable.from(contributors)
                .subscribe(contributor -> System.out.println(contributor.login + " (" + contributor.contributions + ")"));
    });
    System.out.println("================4lambda flat Map======================================");
    observable.flatMap(contributors -> Observable.from(contributors))
             .subscribe(contributor -> System.out.println(contributor.login + " (" + contributor.contributions + ")"));
    System.out.println("================4lambda filter======================================");
    observable.flatMap(contributors -> Observable.from(contributors))
             .filter(contributor -> contributor != null)
             .subscribe(contributor -> System.out.println(contributor.login + " (" + contributor.contributions + ")"));
    System.out.println("================4lambda get======================================");
    observable.flatMap(contributors -> Observable.from(contributors))
              .take(5)
              .subscribe(contributor -> System.out.println(contributor.login + " (" + contributor.contributions + ")"));
    System.out.println("================4lambda doOnNext======================================");
    observable.flatMap(contributors -> Observable.from(contributors))
            .doOnNext(contributor -> System.out.println("do someThing...."+contributor.getClass().toString()) )
            .subscribe(contributor ->System.out.println(contributor.login + " (" + contributor.contributions + ")"));
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rongyili88

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值