使用Retrofit和Rxjava让你的网络请求更简单

来源:互联网 发布:java oa项目源码 编辑:程序博客网 时间:2024/05/19 00:10

转载自:http://blog.csdn.net/yanglei0917/article/details/60964151,主要是为了记录方法。

去年的时候好多公司就已经使用Rxjava和Retrofit了,最近自自己学习了一下,感觉真的是很好用,让自己的网络请求变得更简单了,而且封装性极强。首先做一下准备工作,导入需要引用的文件
compile 'com.android.support:appcompat-v7:25.1.0'    testCompile 'junit:junit:4.12'    compile 'io.reactivex:rxjava:1.1.0'    compile 'io.reactivex:rxandroid:1.1.0'    compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'    compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'    compile 'com.squareup.retrofit2:adapter-rxjava:2.0.0-beta4'    compile 'com.google.code.gson:gson:2.6.2'    compile 'com.jakewharton:butterknife:7.0.1'    compile 'com.android.support:recyclerview-v7:25.1.0'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
网络请求的地址:https://api.douban.com/v2/movie/top250?start=0&count=10添加网络请求权限
<uses-permission android:name="android.permission.INTERNET"/>
  • 1
  • 2
首先看一下Retrofit的使用基本用法
  1. 创建一个接口类MovieService 对网络接口进行请求这里写代码片
  2. 构建网络请求
public interface MovieService {    @GET("top250")    Call<MovieBean> getTopMovie(@Query("start")int start, @Query("count")int count);}
  • 1
  • 2
  • 3
  • 4
String baseUrl="https://api.douban.com/v2/movie/";        Retrofit retrofit = new Retrofit.Builder()                .baseUrl(baseUrl)                .addConverterFactory(GsonConverterFactory.create())                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())               .build();        MovieService service = retrofit.create(MovieService.class);        service.getTopMovie(0,10)                .subscribeOn(Schedulers.io())                .observeOn(AndroidSchedulers.mainThread())                .subscribe(new Subscriber<MovieBean>() {                    @Override                    public void onCompleted() {                        Toast.makeText(MainActivity.this, "Get Top Movie Completed", Toast.LENGTH_SHORT).show();                    }                    @Override                    public void onError(Throwable e) {                        resultTV.setText(e.getMessage());                    }                    @Override                    public void onNext(MovieBean movieBean) {                        resultTV.setText(movieBean.getTitle());                    }                });        Call<MovieBean> call = service.getTopMovie(0, 10);       call.enqueue(new Callback<MovieBean>() {            @Override            public void onResponse(Call<MovieBean> call, Response<MovieBean> response) {                MovieBean body = response.body();                resultTV.setText(response.body().getTitle());                System.out.println("成功"+response.body().getCount());            }            @Override            public void onFailure(Call<MovieBean> call, Throwable t) {                resultTV.setText(t.getMessage());            }        });
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
现在看看我们的布局文件MainActivity的xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="ledon.com.retrofitdemo.MainActivity">    <Button        android:id="@+id/click_me_BN"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_alignParentBottom="true"        android:padding="5dp"        android:text="获取数据"        android:textSize="16sp"/>    <ListView        android:id="@+id/result_TV"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_above="@id/click_me_BN"        android:textSize="16sp"/></RelativeLayout>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
接下来就看看怎么样和RxJava的完美结合了。首先改造一下MovieService这个接口
public interface MovieService {    @GET("top250")    Observable<MovieBean> getTopMovie(@Query("start")int start, @Query("count")int count);}
  • 1
  • 2
  • 3
  • 4
然后看一下我们需要创建一个HttpMethods关于一个http的请求方法
package ledon.com.retrofitdemo.api;import java.util.List;import java.util.concurrent.TimeUnit;import javax.security.auth.Subject;import ledon.com.retrofitdemo.MovieBean;import okhttp3.OkHttpClient;import retrofit2.Retrofit;import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;import retrofit2.converter.gson.GsonConverterFactory;import rx.Subscriber;import rx.android.schedulers.AndroidSchedulers;import rx.functions.Func1;import rx.schedulers.Schedulers;/** * Created by Administrator on 2017/3/9. */public class HttpMethods {    public static final String BASE_URL="https://api.douban.com/v2/movie/";    private static final int DEFAULT_TIMEOUT=5;    private Retrofit retrofit;    private MovieService movieService;    //私有化构造方法    private HttpMethods(){        //手动创建一个okhttpClient并设置超时时间        OkHttpClient.Builder builder = new OkHttpClient.Builder();        builder.connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS);        retrofit=new Retrofit.Builder()                .client(builder.build())                .addConverterFactory(GsonConverterFactory.create())                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())                .baseUrl(BASE_URL)                .build();        movieService = retrofit.create(MovieService.class);    }    //在访问httpmethods时候创建单例    private static class SingletonHolder{        private static final HttpMethods INSTANCE=new HttpMethods();    }     //获取单例    public static HttpMethods getInstance(){        return SingletonHolder.INSTANCE;    }    public void getTopMovie(Subscriber<MovieBean>subscriber, int start, int count){       movieService.getTopMovie(start, count)                .subscribeOn(Schedulers.io())                .unsubscribeOn(Schedulers.io())                .observeOn(AndroidSchedulers.mainThread())                .subscribe(subscriber);    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
so,很简单,我们的结合之路已经完成,另附源代码
package ledon.com.retrofitdemo;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.widget.Button;import android.widget.ListView;import android.widget.RelativeLayout;import android.widget.Toast;import java.util.List;import butterknife.Bind;import butterknife.ButterKnife;import butterknife.OnClick;import ledon.com.retrofitdemo.adapter.MovieAdapter;import ledon.com.retrofitdemo.api.HttpMethods;import rx.Subscriber;public class MainActivity extends AppCompatActivity {    @Bind(R.id.click_me_BN)    Button clickMeBN;    @Bind(R.id.result_TV)    ListView resultTV;    @Bind(R.id.activity_main)    RelativeLayout activityMain;    private Subscriber<MovieBean> subscriber;    private List<MovieBean.SubjectsBean> list;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ButterKnife.bind(this);        //resultTV.setAdapter();    }    //进行网络请求    private void getMovie() {        subscriber = new Subscriber<MovieBean>() {            @Override            public void onCompleted() {                Toast.makeText(MainActivity.this, "Get Top Movie Completed", Toast.LENGTH_SHORT).show();            }            @Override            public void onError(Throwable e) {                //resultTV.setText(e.getMessage());            }            @Override            public void onNext(MovieBean movieBean) {               // List<MovieBean.SubjectsBean> subjects = movieBean.getSubjects();                list=movieBean.getSubjects();                MovieAdapter movieAdapter=new MovieAdapter(MainActivity.this,list);                resultTV.setAdapter(movieAdapter);                //resultTV.setText(movieBean.getTitle());            }        };        HttpMethods.getInstance().getTopMovie(subscriber, 0, 10);       /* String baseUrl="https://api.douban.com/v2/movie/";        Retrofit retrofit = new Retrofit.Builder()                .baseUrl(baseUrl)                .addConverterFactory(GsonConverterFactory.create())                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())               .build();        MovieService service = retrofit.create(MovieService.class);        service.getTopMovie(0,10)                .subscribeOn(Schedulers.io())                .observeOn(AndroidSchedulers.mainThread())                .subscribe(new Subscriber<MovieBean>() {                    @Override                    public void onCompleted() {                        Toast.makeText(MainActivity.this, "Get Top Movie Completed", Toast.LENGTH_SHORT).show();                    }                    @Override                    public void onError(Throwable e) {                        resultTV.setText(e.getMessage());                    }                    @Override                    public void onNext(MovieBean movieBean) {                        resultTV.setText(movieBean.getTitle());                    }                });*/        //Call<MovieBean> call = service.getTopMovie(0, 10);       /* call.enqueue(new Callback<MovieBean>() {            @Override            public void onResponse(Call<MovieBean> call, Response<MovieBean> response) {                MovieBean body = response.body();                resultTV.setText(response.body().getTitle());                System.out.println("成功"+response.body().getCount());            }            @Override            public void onFailure(Call<MovieBean> call, Throwable t) {                resultTV.setText(t.getMessage());            }        });*/    }    @OnClick(R.id.click_me_BN)    public void onClick() {        getMovie();    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
package ledon.com.retrofitdemo;import java.util.List;/** * Created by Administrator on 2017/3/9. */public class MovieBean {    /**     * count : 10     * start : 0     * total : 250     * subjects : [{"rating":{"max":10,"average":9.6,"stars":"50","min":0},"genres":["犯罪","剧情"],"title":"肖申克的救赎","casts":[{"alt":"https://movie.douban.com/celebrity/1054521/","avatars":{"small":"https://img3.doubanio.com/img/celebrity/small/17525.jpg","large":"https://img3.doubanio.com/img/celebrity/large/17525.jpg","medium":"https://img3.doubanio.com/img/celebrity/medium/17525.jpg"},"name":"蒂姆·罗宾斯","id":"1054521"},{"alt":"https://movie.douban.com/celebrity/1054534/","avatars":{"small":"https://img3.doubanio.com/img/celebrity/small/34642.jpg","large":"https://img3.doubanio.com/img/celebrity/large/34642.jpg","medium":"https://img3.doubanio.com/img/celebrity/medium/34642.jpg"},"name":"摩根·弗里曼","id":"1054534"},{"alt":"https://movie.douban.com/celebrity/1041179/","avatars":{"small":"https://img1.doubanio.com/img/celebrity/small/5837.jpg","large":"https://img1.doubanio.com/img/celebrity/large/5837.jpg","medium":"https://img1.doubanio.com/img/celebrity/medium/5837.jpg"},"name":"鲍勃·冈顿","id":"1041179"}],"collect_count":1036030,"original_title":"The Shawshank Redemption","subtype":"movie","directors":[{"alt":"https://movie.douban.com/celebrity/1047973/","avatars":{"small":"https://img3.doubanio.com/img/celebrity/small/230.jpg","large":"https://img3.doubanio.com/img/celebrity/large/230.jpg","medium":"https://img3.doubanio.com/img/celebrity/medium/230.jpg"},"name":"弗兰克·德拉邦特","id":"1047973"}],"year":"1994","images":{"small":"https://img3.doubanio.com/view/movie_poster_cover/ipst/public/p480747492.jpg","large":"https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p480747492.jpg","medium":"https://img3.doubanio.com/view/movie_poster_cover/spst/public/p480747492.jpg"},"alt":"https://movie.douban.com/subject/1292052/","id":"1292052"},{"rating":{"max":10,"average":9.4,"stars":"50","min":0},"genres":["剧情","动作","犯罪"],"title":"这个杀手不太冷","casts":[{"alt":"https://movie.douban.com/celebrity/1025182/","avatars":{"small":"https://img3.doubanio.com/img/celebrity/small/8833.jpg","large":"https://img3.doubanio.com/img/celebrity/large/8833.jpg","medium":"https://img3.doubanio.com/img/celebrity/medium/8833.jpg"},"name":"让·雷诺","id":"1025182"},{"alt":"https://movie.douban.com/celebrity/1054454/","avatars":{"small":"https://img3.doubanio.com/img/celebrity/small/2274.jpg","large":"https://img3.doubanio.com/img/celebrity/large/2274.jpg","medium":"https://img3.doubanio.com/img/celebrity/medium/2274.jpg"},"name":"娜塔莉·波特曼","id":"1054454"},{"alt":"https://movie.douban.com/celebrity/1010507/","avatars":{"small":"https://img3.doubanio.com/img/celebrity/small/104.jpg","large":"https://img3.doubanio.com/img/celebrity/large/104.jpg","medium":"https://img3.doubanio.com/img/celebrity/medium/104.jpg"},"name":"加里·奥德曼","id":"1010507"}],"collect_count":1002125,"original_title":"Léon","subtype":"movie","directors":[{"alt":"https://movie.douban.com/celebrity/1031876/","avatars":{"small":"https://img3.doubanio.com/img/celebrity/small/33301.jpg","large":"https://img3.doubanio.com/img/celebrity/large/33301.jpg","medium":"https://img3.doubanio.com/img/celebrity/medium/33301.jpg"},"name":"吕克·贝松","id":"1031876"}],"year":"1994","images":{"small":"https://img3.doubanio.com/view/movie_poster_cover/ipst/public/p511118051.jpg","large":"https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p511118051.jpg","medium":"https://img3.doubanio.com/view/movie_poster_cover/spst/public/p511118051.jpg"},"alt":"https://movie.douban.com/subject/1295644/","id":"1295644"},{"rating":{"max":10,"average":9.5,"stars":"50","min":0},"genres":["剧情","爱情","同性"],"title":"霸王别姬","casts":[{"alt":"https://movie.douban.com/celebrity/1003494/","avatars":{"small":"https://img1.doubanio.com/img/celebrity/small/67.jpg","large":"https://img1.doubanio.com/img/celebrity/large/67.jpg","medium":"https://img1.doubanio.com/img/celebrity/medium/67.jpg"},"name":"张国荣","id":"1003494"},{"alt":"https://movie.douban.com/celebrity/1050265/","avatars":{"small":"https://img3.doubanio.com/img/celebrity/small/10381.jpg","large":"https://img3.doubanio.com/img/celebrity/large/10381.jpg","medium":"https://img3.doubanio.com/img/celebrity/medium/10381.jpg"},"name":"张丰毅","id":"1050265"},{"alt":"https://movie.douban.com/celebrity/1035641/","avatars":{"small":"https://img1.doubanio.com/img/celebrity/small/1399268395.47.jpg","large":"https://img1.doubanio.com/img/celebrity/large/1399268395.47.jpg","medium":"https://img1.doubanio.com/img/celebrity/medium/1399268395.47.jpg"},"name":"巩俐","id":"1035641"}],"collect_count":727900,"original_title":"霸王别姬","subtype":"movie","directors":[{"alt":"https://movie.douban.com/celebrity/1023040/","avatars":{"small":"https://img3.doubanio.com/img/celebrity/small/750.jpg","large":"https://img3.doubanio.com/img/celebrity/large/750.jpg","medium":"https://img3.doubanio.com/img/celebrity/medium/750.jpg"},"name":"陈凯歌","id":"1023040"}],"year":"1993","images":{"small":"https://img3.doubanio.com/view/movie_poster_cover/ipst/public/p1910813120.jpg","large":"https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p1910813120.jpg","medium":"https://img3.doubanio.com/view/movie_poster_cover/spst/public/p1910813120.jpg"},"alt":"https://movie.douban.com/subject/1291546/","id":"1291546"},{"rating":{"max":10,"average":9.4,"stars":"50","min":0},"genres":["剧情","爱情"],"title":"阿甘正传","casts":[{"alt":"https://movie.douban.com/celebrity/1054450/","avatars":{"small":"https://img3.doubanio.com/img/celebrity/small/551.jpg","large":"https://img3.doubanio.com/img/celebrity/large/551.jpg","medium":"https://img3.doubanio.com/img/celebrity/medium/551.jpg"},"name":"汤姆·汉克斯","id":"1054450"},{"alt":"https://movie.douban.com/celebrity/1002676/","avatars":{"small":"https://img1.doubanio.com/img/celebrity/small/51737.jpg","large":"https://img1.doubanio.com/img/celebrity/large/51737.jpg","medium":"https://img1.doubanio.com/img/celebrity/medium/51737.jpg"},"name":"罗宾·怀特","id":"1002676"},{"alt":"https://movie.douban.com/celebrity/1031848/","avatars":{"small":"https://img3.doubanio.com/img/celebrity/small/1345.jpg","large":"https://img3.doubanio.com/img/celebrity/large/1345.jpg","medium":"https://img3.doubanio.com/img/celebrity/medium/1345.jpg"},"name":"加里·西尼斯","id":"1031848"}],"collect_count":895393,"original_title":"Forrest Gump","subtype":"movie","directors":[{"alt":"https://movie.douban.com/celebrity/1053564/","avatars":{"small":"https://img3.doubanio.com/img/celebrity/small/505.jpg","large":"https://img3.doubanio.com/img/celebrity/large/505.jpg","medium":"https://img3.doubanio.com/img/celebrity/medium/505.jpg"},"name":"罗伯特·泽米吉斯","id":"1053564"}],"year":"1994","images":{"small":"https://img1.doubanio.com/view/movie_poster_cover/ipst/public/p510876377.jpg","large":"https://img1.doubanio.com/view/movie_poster_cover/lpst/public/p510876377.jpg","medium":"https://img1.doubanio.com/view/movie_poster_cover/spst/public/p510876377.jpg"},"alt":"https://movie.douban.com/subject/1292720/","id":"1292720"},{"rating":{"max":10,"average":9.5,"stars":"50","min":0},"genres":["剧情","喜剧","爱情"],"title":"美丽人生","casts":[{"alt":"https://movie.douban.com/celebrity/1041004/","avatars":{"small":"https://img3.doubanio.com/img/celebrity/small/26764.jpg","large":"https://img3.doubanio.com/img/celebrity/large/26764.jpg","medium":"https://img3.doubanio.com/img/celebrity/medium/26764.jpg"},"name":"罗伯托·贝尼尼","id":"1041004"},{"alt":"https://movie.douban.com/celebrity/1000375/","avatars":{"small":"https://img1.doubanio.com/img/celebrity/small/9548.jpg","large":"https://img1.doubanio.com/img/celebrity/large/9548.jpg","medium":"https://img1.doubanio.com/img/celebrity/medium/9548.jpg"},"name":"尼可莱塔·布拉斯基","id":"1000375"},{"alt":"https://movie.douban.com/celebrity/1000368/","avatars":{"small":"https://img3.doubanio.com/img/celebrity/small/45590.jpg","large":"https://img3.doubanio.com/img/celebrity/large/45590.jpg","medium":"https://img3.doubanio.com/img/celebrity/medium/45590.jpg"},"name":"乔治·坎塔里尼","id":"1000368"}],"collect_count":493063,"original_title":"La vita è bella","subtype":"movie","directors":[{"alt":"https://movie.douban.com/celebrity/1041004/","avatars":{"small":"https://img3.doubanio.com/img/celebrity/small/26764.jpg","large":"https://img3.doubanio.com/img/celebrity/large/26764.jpg","medium":"https://img3.doubanio.com/img/celebrity/medium/26764.jpg"},"name":"罗伯托·贝尼尼","id":"1041004"}],"year":"1997","images":{"small":"https://img3.doubanio.com/view/movie_poster_cover/ipst/public/p510861873.jpg","large":"https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p510861873.jpg","medium":"https://img3.doubanio.com/view/movie_poster_cover/spst/public/p510861873.jpg"},"alt":"https://movie.douban.com/subject/1292063/","id":"1292063"},{"rating":{"max":10,"average":9.2,"stars":"50","min":0},"genres":["剧情","动画","奇幻"],"title":"千与千寻","casts":[{"alt":"https://movie.douban.com/celebrity/1023337/","avatars":{"small":"https://img3.doubanio.com/img/celebrity/small/1463193210.13.jpg","large":"https://img3.doubanio.com/img/celebrity/large/1463193210.13.jpg","medium":"https://img3.doubanio.com/img/celebrity/medium/1463193210.13.jpg"},"name":"柊瑠美","id":"1023337"},{"alt":"https://movie.douban.com/celebrity/1005438/","avatars":{"small":"https://img5.doubanio.com/img/celebrity/small/44986.jpg","large":"https://img5.doubanio.com/img/celebrity/large/44986.jpg","medium":"https://img5.doubanio.com/img/celebrity/medium/44986.jpg"},"name":"入野自由","id":"1005438"},{"alt":"https://movie.douban.com/celebrity/1045797/","avatars":{"small":"https://img3.doubanio.com/img/celebrity/small/18785.jpg","large":"https://img3.doubanio.com/img/celebrity/large/18785.jpg","medium":"https://img3.doubanio.com/img/celebrity/medium/18785.jpg"},"name":"夏木真理","id":"1045797"}],"collect_count":801778,"original_title":"千と千尋の神隠し","subtype":"movie","directors":[{"alt":"https://movie.douban.com/celebrity/1054439/","avatars":{"small":"https://img5.doubanio.com/img/celebrity/small/616.jpg","large":"https://img5.doubanio.com/img/celebrity/large/616.jpg","medium":"https://img5.doubanio.com/img/celebrity/medium/616.jpg"},"name":"宫崎骏","id":"1054439"}],"year":"2001","images":{"small":"https://img5.doubanio.com/view/movie_poster_cover/ipst/public/p1910830216.jpg","large":"https://img5.doubanio.com/view/movie_poster_cover/lpst/public/p1910830216.jpg","medium":"https://img5.doubanio.com/view/movie_poster_cover/spst/public/p1910830216.jpg"},"alt":"https://movie.douban.com/subject/1291561/","id":"1291561"},{"rating":{"max":10,"average":9.4,"stars":"50","min":0},"genres":["剧情","历史","战争"],"title":"辛德勒的名单","casts":[{"alt":"https://movie.douban.com/celebrity/1031220/","avatars":{"small":"https://img5.doubanio.com/img/celebrity/small/44906.jpg","large":"https://img5.doubanio.com/img/celebrity/large/44906.jpg","medium":"https://img5.doubanio.com/img/celebrity/medium/44906.jpg"},"name":"连姆·尼森","id":"1031220"},{"alt":"https://movie.douban.com/celebrity/1054393/","avatars":{"small":"https://img1.doubanio.com/img/celebrity/small/1374649659.58.jpg","large":"https://img1.doubanio.com/img/celebrity/large/1374649659.58.jpg","medium":"https://img1.doubanio.com/img/celebrity/medium/1374649659.58.jpg"},"name":"本·金斯利","id":"1054393"},{"alt":"https://movie.douban.com/celebrity/1006956/","avatars":{"small":"https://img3.doubanio.com/img/celebrity/small/28941.jpg","large":"https://img3.doubanio.com/img/celebrity/large/28941.jpg","medium":"https://img3.doubanio.com/img/celebrity/medium/28941.jpg"},"name":"拉尔夫·费因斯","id":"1006956"}],"collect_count":472445,"original_title":"Schindler's List","subtype":"movie","directors":[{"alt":"https://movie.douban.com/celebrity/1054440/","avatars":{"small":"https://img3.doubanio.com/img/celebrity/small/34602.jpg","large":"https://img3.doubanio.com/img/celebrity/large/34602.jpg","medium":"https://img3.doubanio.com/img/celebrity/medium/34602.jpg"},"name":"史蒂文·斯皮尔伯格","id":"1054440"}],"year":"1993","images":{"small":"https://img3.doubanio.com/view/movie_poster_cover/ipst/public/p492406163.jpg","large":"https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p492406163.jpg","medium":"https://img3.doubanio.com/view/movie_poster_cover/spst/public/p492406163.jpg"},"alt":"https://movie.douban.com/subject/1295124/","id":"1295124"},{"rating":{"max":10,"average":9.2,"stars":"45","min":0},"genres":["剧情","爱情","灾难"],"title":"泰坦尼克号","casts":[{"alt":"https://movie.douban.com/celebrity/1041029/","avatars":{"small":"https://img3.doubanio.com/img/celebrity/small/470.jpg","large":"https://img3.doubanio.com/img/celebrity/large/470.jpg","medium":"https://img3.doubanio.com/img/celebrity/medium/470.jpg"},"name":"莱昂纳多·迪卡普里奥","id":"1041029"},{"alt":"https://movie.douban.com/celebrity/1054446/","avatars":{"small":"https://img1.doubanio.com/img/celebrity/small/53358.jpg","large":"https://img1.doubanio.com/img/celebrity/large/53358.jpg","medium":"https://img1.doubanio.com/img/celebrity/medium/53358.jpg"},"name":"凯特·温丝莱特","id":"1054446"},{"alt":"https://movie.douban.com/celebrity/1031864/","avatars":{"small":"https://img5.doubanio.com/img/celebrity/small/45186.jpg","large":"https://img5.doubanio.com/img/celebrity/large/45186.jpg","medium":"https://img5.doubanio.com/img/celebrity/medium/45186.jpg"},"name":"比利·赞恩","id":"1031864"}],"collect_count":823041,"original_title":"Titanic","subtype":"movie","directors":[{"alt":"https://movie.douban.com/celebrity/1022571/","avatars":{"small":"https://img3.doubanio.com/img/celebrity/small/33715.jpg","large":"https://img3.doubanio.com/img/celebrity/large/33715.jpg","medium":"https://img3.doubanio.com/img/celebrity/medium/33715.jpg"},"name":"詹姆斯·卡梅隆","id":"1022571"}],"year":"1997","images":{"small":"https://img3.doubanio.com/view/movie_poster_cover/ipst/public/p457760035.jpg","large":"https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p457760035.jpg","medium":"https://img3.doubanio.com/view/movie_poster_cover/spst/public/p457760035.jpg"},"alt":"https://movie.douban.com/subject/1292722/","id":"1292722"},{"rating":{"max":10,"average":9.2,"stars":"50","min":0},"genres":["剧情","动作","科幻"],"title":"盗梦空间","casts":[{"alt":"https://movie.douban.com/celebrity/1041029/","avatars":{"small":"https://img3.doubanio.com/img/celebrity/small/470.jpg","large":"https://img3.doubanio.com/img/celebrity/large/470.jpg","medium":"https://img3.doubanio.com/img/celebrity/medium/470.jpg"},"name":"莱昂纳多·迪卡普里奥","id":"1041029"},{"alt":"https://movie.douban.com/celebrity/1101703/","avatars":{"small":"https://img1.doubanio.com/img/celebrity/small/3517.jpg","large":"https://img1.doubanio.com/img/celebrity/large/3517.jpg","medium":"https://img1.doubanio.com/img/celebrity/medium/3517.jpg"},"name":"约瑟夫·高登-莱维特","id":"1101703"},{"alt":"https://movie.douban.com/celebrity/1012520/","avatars":{"small":"https://img1.doubanio.com/img/celebrity/small/118.jpg","large":"https://img1.doubanio.com/img/celebrity/large/118.jpg","medium":"https://img1.doubanio.com/img/celebrity/medium/118.jpg"},"name":"艾伦·佩吉","id":"1012520"}],"collect_count":903330,"original_title":"Inception","subtype":"movie","directors":[{"alt":"https://movie.douban.com/celebrity/1054524/","avatars":{"small":"https://img3.doubanio.com/img/celebrity/small/673.jpg","large":"https://img3.doubanio.com/img/celebrity/large/673.jpg","medium":"https://img3.doubanio.com/img/celebrity/medium/673.jpg"},"name":"克里斯托弗·诺兰","id":"1054524"}],"year":"2010","images":{"small":"https://img3.doubanio.com/view/movie_poster_cover/ipst/public/p513344864.jpg","large":"https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p513344864.jpg","medium":"https://img3.doubanio.com/view/movie_poster_cover/spst/public/p513344864.jpg"},"alt":"https://movie.douban.com/subject/3541415/","id":"3541415"},{"rating":{"max":10,"average":9.3,"stars":"50","min":0},"genres":["喜剧","爱情","科幻"],"title":"机器人总动员","casts":[{"alt":"https://movie.douban.com/celebrity/1009535/","avatars":{"small":"https://img1.doubanio.com/img/celebrity/small/13028.jpg","large":"https://img1.doubanio.com/img/celebrity/large/13028.jpg","medium":"https://img1.doubanio.com/img/celebrity/medium/13028.jpg"},"name":"本·贝尔特","id":"1009535"},{"alt":"https://movie.douban.com/celebrity/1000389/","avatars":{"small":"https://img5.doubanio.com/img/celebrity/small/1365856130.16.jpg","large":"https://img5.doubanio.com/img/celebrity/large/1365856130.16.jpg","medium":"https://img5.doubanio.com/img/celebrity/medium/1365856130.16.jpg"},"name":"艾丽莎·奈特","id":"1000389"},{"alt":"https://movie.douban.com/celebrity/1018022/","avatars":{"small":"https://img1.doubanio.com/img/celebrity/small/31068.jpg","large":"https://img1.doubanio.com/img/celebrity/large/31068.jpg","medium":"https://img1.doubanio.com/img/celebrity/medium/31068.jpg"},"name":"杰夫·格尔林","id":"1018022"}],"collect_count":586255,"original_title":"WALL·E","subtype":"movie","directors":[{"alt":"https://movie.douban.com/celebrity/1036450/","avatars":{"small":"https://img5.doubanio.com/img/celebrity/small/1467359656.96.jpg","large":"https://img5.doubanio.com/img/celebrity/large/1467359656.96.jpg","medium":"https://img5.doubanio.com/img/celebrity/medium/1467359656.96.jpg"},"name":"安德鲁·斯坦顿","id":"1036450"}],"year":"2008","images":{"small":"https://img3.doubanio.com/view/movie_poster_cover/ipst/public/p449665982.jpg","large":"https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p449665982.jpg","medium":"https://img3.doubanio.com/view/movie_poster_cover/spst/public/p449665982.jpg"},"alt":"https://movie.douban.com/subject/2131459/","id":"2131459"}]     * title : 豆瓣电影Top250     */    private int count;    private int start;    private int total;    private String title;    private List<SubjectsBean> subjects;    public int getCount() {        return count;    }    public void setCount(int count) {        this.count = count;    }    public int getStart() {        return start;    }    public void setStart(int start) {        this.start = start;    }    public int getTotal() {        return total;    }    public void setTotal(int total) {        this.total = total;    }    public String getTitle() {        return title;    }    public void setTitle(String title) {        this.title = title;    }    public List<SubjectsBean> getSubjects() {        return subjects;    }    public void setSubjects(List<SubjectsBean> subjects) {        this.subjects = subjects;    }    public static class SubjectsBean {        /**         * rating : {"max":10,"average":9.6,"starsmin":0}         * genres : ["犯罪","剧情"]":"50","         * title : 肖申克的救赎         * casts : [{"alt":"https://movie.douban.com/celebrity/1054521/","avatars":{"small":"https://img3.doubanio.com/img/celebrity/small/17525.jpg","large":"https://img3.doubanio.com/img/celebrity/large/17525.jpg","medium":"https://img3.doubanio.com/img/celebrity/medium/17525.jpg"},"name":"蒂姆·罗宾斯","id":"1054521"},{"alt":"https://movie.douban.com/celebrity/1054534/","avatars":{"small":"https://img3.doubanio.com/img/celebrity/small/34642.jpg","large":"https://img3.doubanio.com/img/celebrity/large/34642.jpg","medium":"https://img3.doubanio.com/img/celebrity/medium/34642.jpg"},"name":"摩根·弗里曼","id":"1054534"},{"alt":"https://movie.douban.com/celebrity/1041179/","avatars":{"small":"https://img1.doubanio.com/img/celebrity/small/5837.jpg","large":"https://img1.doubanio.com/img/celebrity/large/5837.jpg","medium":"https://img1.doubanio.com/img/celebrity/medium/5837.jpg"},"name":"鲍勃·冈顿","id":"1041179"}]         * collect_count : 1036030         * original_title : The Shawshank Redemption         * subtype : movie         * directors : [{"alt":"https://movie.douban.com/celebrity/1047973/","avatars":{"small":"https://img3.doubanio.com/img/celebrity/small/230.jpg","large":"https://img3.doubanio.com/img/celebrity/large/230.jpg","medium":"https://img3.doubanio.com/img/celebrity/medium/230.jpg"},"name":"弗兰克·德拉邦特","id":"1047973"}]         * year : 1994         * images : {"small":"https://img3.doubanio.com/view/movie_poster_cover/ipst/public/p480747492.jpg","large":"https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p480747492.jpg","medium":"https://img3.doubanio.com/view/movie_poster_cover/spst/public/p480747492.jpg"}         * alt : https://movie.douban.com/subject/1292052/         * id : 1292052         */        private RatingBean rating;        private String title;        private int collect_count;        private String original_title;        private String subtype;        private String year;        private ImagesBean images;        private String alt;        private String id;        private List<String> genres;        private List<CastsBean> casts;        private List<DirectorsBean> directors;        public RatingBean getRating() {            return rating;        }        public void setRating(RatingBean rating) {            this.rating = rating;        }        public String getTitle() {            return title;        }        public void setTitle(String title) {            this.title = title;        }        public int getCollect_count() {            return collect_count;        }        public void setCollect_count(int collect_count) {            this.collect_count = collect_count;        }        public String getOriginal_title() {            return original_title;        }        public void setOriginal_title(String original_title) {            this.original_title = original_title;        }        public String getSubtype() {            return subtype;        }        public void setSubtype(String subtype) {            this.subtype = subtype;        }        public String getYear() {            return year;        }        public void setYear(String year) {            this.year = year;        }        public ImagesBean getImages() {            return images;        }        public void setImages(ImagesBean images) {            this.images = images;        }        public String getAlt() {            return alt;        }        public void setAlt(String alt) {            this.alt = alt;        }        public String getId() {            return id;        }        public void setId(String id) {            this.id = id;        }        public List<String> getGenres() {            return genres;        }        public void setGenres(List<String> genres) {            this.genres = genres;        }        public List<CastsBean> getCasts() {            return casts;        }        public void setCasts(List<CastsBean> casts) {            this.casts = casts;        }        public List<DirectorsBean> getDirectors() {            return directors;        }        public void setDirectors(List<DirectorsBean> directors) {            this.directors = directors;        }        public static class RatingBean {            /**             * max : 10             * average : 9.6             * stars : 50             * min : 0             */            private int max;            private double average;            private String stars;            private int min;            public int getMax() {                return max;            }            public void setMax(int max) {                this.max = max;            }            public double getAverage() {                return average;            }            public void setAverage(double average) {                this.average = average;            }            public String getStars() {                return stars;            }            public void setStars(String stars) {                this.stars = stars;            }            public int getMin() {                return min;            }            public void setMin(int min) {                this.min = min;            }        }        public static class ImagesBean {            /**             * small : https://img3.doubanio.com/view/movie_poster_cover/ipst/public/p480747492.jpg             * large : https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p480747492.jpg             * medium : https://img3.doubanio.com/view/movie_poster_cover/spst/public/p480747492.jpg             */            private String small;            private String large;            private String medium;            public String getSmall() {                return small;            }            public void setSmall(String small) {                this.small = small;            }            public String getLarge() {                return large;            }            public void setLarge(String large) {                this.large = large;            }            public String getMedium() {                return medium;            }            public void setMedium(String medium) {                this.medium = medium;            }        }        public static class CastsBean {            /**             * alt : https://movie.douban.com/celebrity/1054521/             * avatars : {"small":"https://img3.doubanio.com/img/celebrity/small/17525.jpg","large":"https://img3.doubanio.com/img/celebrity/large/17525.jpg","medium":"https://img3.doubanio.com/img/celebrity/medium/17525.jpg"}             * name : 蒂姆·罗宾斯             * id : 1054521             */            private String alt;            private AvatarsBean avatars;            private String name;            private String id;            public String getAlt() {                return alt;            }            public void setAlt(String alt) {                this.alt = alt;            }            public AvatarsBean getAvatars() {                return avatars;            }            public void setAvatars(AvatarsBean avatars) {                this.avatars = avatars;            }            public String getName() {                return name;            }            public void setName(String name) {                this.name = name;            }            public String getId() {                return id;            }            public void setId(String id) {                this.id = id;            }            public static class AvatarsBean {                /**                 * small : https://img3.doubanio.com/img/celebrity/small/17525.jpg                 * large : https://img3.doubanio.com/img/celebrity/large/17525.jpg                 * medium : https://img3.doubanio.com/img/celebrity/medium/17525.jpg                 */                private String small;                private String large;                private String medium;                public String getSmall() {                    return small;                }                public void setSmall(String small) {                    this.small = small;                }                public String getLarge() {                    return large;                }                public void setLarge(String large) {                    this.large = large;                }                public String getMedium() {                    return medium;                }                public void setMedium(String medium) {                    this.medium = medium;                }            }        }        public static class DirectorsBean {            /**             * alt : https://movie.douban.com/celebrity/1047973/             * avatars : {"small":"https://img3.doubanio.com/img/celebrity/small/230.jpg","large":"https://img3.doubanio.com/img/celebrity/large/230.jpg","medium":"https://img3.doubanio.com/img/celebrity/medium/230.jpg"}             * name : 弗兰克·德拉邦特             * id : 1047973             */            private String alt;            private AvatarsBeanX avatars;            private String name;            private String id;            public String getAlt() {                return alt;            }            public void setAlt(String alt) {                this.alt = alt;            }            public AvatarsBeanX getAvatars() {                return avatars;            }            public void setAvatars(AvatarsBeanX avatars) {                this.avatars = avatars;            }            public String getName() {                return name;            }            public void setName(String name) {                this.name = name;            }            public String getId() {                return id;            }            public void setId(String id) {                this.id = id;            }            public static class AvatarsBeanX {                /**                 * small : https://img3.doubanio.com/img/celebrity/small/230.jpg                 * large : https://img3.doubanio.com/img/celebrity/large/230.jpg                 * medium : https://img3.doubanio.com/img/celebrity/medium/230.jpg                 */                private String small;                private String large;                private String medium;                public String getSmall() {                    return small;                }                public void setSmall(String small) {                    this.small = small;                }                public String getLarge() {                    return large;                }                public void setLarge(String large) {                    this.large = large;                }                public String getMedium() {                    return medium;                }                public void setMedium(String medium) {                    this.medium = medium;                }            }        }    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • 324
  • 325
  • 326
  • 327
  • 328
  • 329
  • 330
  • 331
  • 332
  • 333
  • 334
  • 335
  • 336
  • 337
  • 338
  • 339
  • 340
  • 341
  • 342
  • 343
  • 344
  • 345
  • 346
  • 347
  • 348
  • 349
  • 350
  • 351
  • 352
  • 353
  • 354
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • 363
  • 364
  • 365
  • 366
  • 367
  • 368
  • 369
  • 370
  • 371
  • 372
  • 373
  • 374
  • 375
  • 376
  • 377
  • 378
  • 379
  • 380
  • 381
  • 382
  • 383
  • 384
  • 385
  • 386
  • 387
  • 388
  • 389
  • 390
  • 391
  • 392
  • 393
  • 394
  • 395
  • 396
  • 397
  • 398
  • 399
  • 400
  • 401
  • 402
  • 403
  • 404
  • 405
  • 406
  • 407
  • 408
  • 409
  • 410
  • 411
  • 412
  • 413
  • 414
  • 415
  • 416
  • 417
  • 418
  • 419
  • 420
  • 421
  • 422
  • 423
  • 424
  • 425
  • 426
  • 427
  • 428
  • 429
  • 430
  • 431
  • 432
  • 433
  • 434
  • 435
  • 436
  • 437
package ledon.com.retrofitdemo.adapter;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import java.util.List;import ledon.com.retrofitdemo.MovieBean;import ledon.com.retrofitdemo.R;/** * Created by Administrator on 2017/3/9. */public class MovieAdapter extends BaseAdapter {    private Context context;    private List<MovieBean.SubjectsBean> lists;    public MovieAdapter(Context context, List<MovieBean.SubjectsBean> lists) {        this.context = context;        this.lists = lists;    }    @Override    public int getCount() {        System.out.println("集合大小:"+lists.size());        return lists.size();    }    @Override    public Object getItem(int i) {        return null;    }    @Override    public long getItemId(int i) {        return 0;    }    @Override    public View getView(int i, View convertView, ViewGroup viewGroup) {        ViewHolder holder;        if (convertView==null){            convertView = LayoutInflater.from(context).inflate(R.layout.item, null);            holder=new ViewHolder();            holder.tv_title= (TextView) convertView.findViewById(R.id.tv_title);            holder.tv_name= (TextView) convertView.findViewById(R.id.tv_name);            convertView.setTag(holder);        }else {            holder= (ViewHolder) convertView.getTag();        }        //MovieBean.SubjectsBean subjectsBean = lists.get(i).getSubjects().get(i);        holder.tv_title.setText(lists.get(i).getTitle());//        holder.tv_name.setText(lists.get(i).getCasts().get(i).getName());        return convertView;    }    static class ViewHolder{        TextView tv_title;        TextView tv_name;    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
package ledon.com.retrofitdemo.api;import java.util.List;import java.util.concurrent.TimeUnit;import javax.security.auth.Subject;import ledon.com.retrofitdemo.MovieBean;import okhttp3.OkHttpClient;import retrofit2.Retrofit;import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;import retrofit2.converter.gson.GsonConverterFactory;import rx.Subscriber;import rx.android.schedulers.AndroidSchedulers;import rx.functions.Func1;import rx.schedulers.Schedulers;/** * Created by Administrator on 2017/3/9. */public class HttpMethods {    public static final String BASE_URL="https://api.douban.com/v2/movie/";    private static final int DEFAULT_TIMEOUT=5;    private Retrofit retrofit;    private MovieService movieService;    //私有化构造方法    private HttpMethods(){        //手动创建一个okhttpClient并设置超时时间        OkHttpClient.Builder builder = new OkHttpClient.Builder();        builder.connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS);        retrofit=new Retrofit.Builder()                .client(builder.build())                .addConverterFactory(GsonConverterFactory.create())                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())                .baseUrl(BASE_URL)                .build();        movieService = retrofit.create(MovieService.class);    }    //在访问httpmethods时候创建单例    private static class SingletonHolder{        private static final HttpMethods INSTANCE=new HttpMethods();    }     //获取单例    public static HttpMethods getInstance(){        return SingletonHolder.INSTANCE;    }    public void getTopMovie(Subscriber<MovieBean>subscriber, int start, int count){       movieService.getTopMovie(start, count)                .subscribeOn(Schedulers.io())                .unsubscribeOn(Schedulers.io())                .observeOn(AndroidSchedulers.mainThread())                .subscribe(subscriber);     /*   movieService.getTopMovie(start, count)                .map(new HttpResultFunc<List<Subject>>())                .subscribeOn(Schedulers.io())                .unsubscribeOn(Schedulers.io())                .observeOn(AndroidSchedulers.mainThread())                .subscribe(subscriber);*/    }    private class HttpResultFunc<T> implements Func1<HttpResult<T>,T>{        @Override        public T call(HttpResult<T> httpResult) {            return httpResult.getSubjects();        }    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
package ledon.com.retrofitdemo.api;import ledon.com.retrofitdemo.MovieBean;import retrofit2.Call;import retrofit2.http.GET;import retrofit2.http.Query;import rx.Observable;/** * Created by Administrator on 2017/3/9. */public interface MovieService {    @GET("top250")    Observable<MovieBean> getTopMovie(@Query("start")int start, @Query("count")int count);}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <TextView        android:layout_gravity="center"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/tv_title"        android:textSize="20dp"        android:text="这个杀手不太冷"/>    <ImageView        android:layout_gravity="center"        android:id="@+id/iv"        android:layout_width="100dp"        android:layout_height="100dp"        android:src="@mipmap/ic_launcher"/><TextView    android:id="@+id/tv_name"    android:layout_gravity="center"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:textSize="20dp"    android:text="主演:呵呵哈哈哈"/></LinearLayout>

阅读全文
0 0