// Path: app/src/main/java/com/example/app/rxjava/bean/picture/Data.java
// public class Data {
//     private String id;
//     private String setId;
//     private int pn;
//     private String thumbnail_url;
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public String getSetId() {
//         return setId;
//     }
// 
//     public void setSetId(String setId) {
//         this.setId = setId;
//     }
// 
//     public int getPn() {
//         return pn;
//     }
// 
//     public void setPn(int pn) {
//         this.pn = pn;
//     }
// 
//     public String getThumbnail_url() {
//         return thumbnail_url;
//     }
// 
//     public void setThumbnail_url(String thumbnail_url) {
//         this.thumbnail_url = thumbnail_url;
//     }
// }
// 
// Path: app/src/main/java/com/example/app/rxjava/bean/picture/Picture.java
// public class Picture {
//     private String tag1;
//     private String tag2;
//     private int totalNum;
//     private int start_index;
//     private int return_number;
//     private List<Data> data;
// 
//     public String getTag1() {
//         return tag1;
//     }
// 
//     public void setTag1(String tag1) {
//         this.tag1 = tag1;
//     }
// 
//     public String getTag2() {
//         return tag2;
//     }
// 
//     public void setTag2(String tag2) {
//         this.tag2 = tag2;
//     }
// 
//     public int getTotalNum() {
//         return totalNum;
//     }
// 
//     public void setTotalNum(int totalNum) {
//         this.totalNum = totalNum;
//     }
// 
//     public int getStart_index() {
//         return start_index;
//     }
// 
//     public void setStart_index(int start_index) {
//         this.start_index = start_index;
//     }
// 
//     public int getReturn_number() {
//         return return_number;
//     }
// 
//     public void setReturn_number(int return_number) {
//         this.return_number = return_number;
//     }
// 
//     public List<Data> getData() {
//         return data;
//     }
// 
//     public void setData(List<Data> data) {
//         this.data = data;
//     }
// 
// }
// 
// Path: app/src/main/java/com/example/app/rxjava/module/main/model/WaterfallModel.java
// public class WaterfallModel extends BaseModel implements WaterfallIA {
//     private static final String ENDPOINT = "http://image.baidu.com";
//     private final Service mService;
// 
//     public static final int ROWNUM = 30;
// 
//     public WaterfallModel() {
//         // 对返回的数据进行解析
//         Gson gsonInstance = new GsonBuilder()
//                 .registerTypeAdapter(new TypeToken<Picture>() {
//                         }.getType(),
//                         new ResultsDeserializer<Picture>())
//                 .create();
// 
//         // 适配器
//         Retrofit mRetrofit = getRetrofitBuilder()
//                 .baseUrl(ENDPOINT)
//                 .addConverterFactory(GsonConverterFactory.create(gsonInstance))
//                 .build();
// 
//         // 服务
//         mService = mRetrofit.create(Service.class);
//     }
// 
//     @Override
//     public Observable<Picture> getServerData(int pageNum) {
//         return mService.getData(pageNum, ROWNUM, "宠物", "全部");
//     }
// 
//     /**
//      * 服务接口
//      */
//     private interface Service {
// 
//         @GET("/channel/listjson")
//         Observable<Picture> getData(@Query("pn") int pn, @Query("rn") int rn, @Query("tag1") String tag1, @Query("tag2") String tag2);
// 
//     }
// }
// 
// Path: app/src/main/java/com/example/app/rxjava/module/main/model/ia/WaterfallIA.java
// public interface WaterfallIA {
//     public Observable<Picture> getServerData(int pageNum);
// }
// 
// Path: app/src/main/java/com/example/app/rxjava/module/main/view/ia/WaterfallViewIA.java
// public interface WaterfallViewIA extends BaseViewIA {
//     void refresh(List<String> data);
//     void loadNews(List<String> data);
// }


import com.example.app.rxjava.bean.picture.Data;
import com.example.app.rxjava.bean.picture.Picture;
import com.example.app.rxjava.module.main.model.WaterfallModel;
import com.example.app.rxjava.module.main.model.ia.WaterfallIA;
import com.example.app.rxjava.module.main.view.ia.WaterfallViewIA;
import java.util.ArrayList;
import java.util.List;
import rx.Observable;
import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Action0;
import rx.functions.Func1;
import rx.schedulers.Schedulers;
                .subscribeOn(AndroidSchedulers.mainThread()) // 指定主线程
                .observeOn(AndroidSchedulers.mainThread())// 在UI线程中执行结果
                .subscribe(new Subscriber<List<String>>() {
                    @Override
                    public void onNext(List<String> data) {
                        if(pageNum == 0) {
                            mWaterfallViewIA.refresh(data);
                        } else {
                            mWaterfallViewIA.loadNews(data);
                        }
                    }

                    @Override
                    public void onError(Throwable e) {
                        mWaterfallViewIA.showError(e.getMessage());
                        mWaterfallViewIA.hideProgressDialog();
                    }

                    @Override
                    public void onCompleted() {
                        mWaterfallViewIA.hideProgressDialog();
                    }
                });
    }

    /**
     * 得到网页中图片的地址
     */
    public List<String> getImageList(Picture picture) {
        List<String> imgList = new ArrayList<String>();
// Path: app/src/main/java/com/example/app/rxjava/bean/picture/Data.java
// public class Data {
//     private String id;
//     private String setId;
//     private int pn;
//     private String thumbnail_url;
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public String getSetId() {
//         return setId;
//     }
// 
//     public void setSetId(String setId) {
//         this.setId = setId;
//     }
// 
//     public int getPn() {
//         return pn;
//     }
// 
//     public void setPn(int pn) {
//         this.pn = pn;
//     }
// 
//     public String getThumbnail_url() {
//         return thumbnail_url;
//     }
// 
//     public void setThumbnail_url(String thumbnail_url) {
//         this.thumbnail_url = thumbnail_url;
//     }
// }
// 
// Path: app/src/main/java/com/example/app/rxjava/bean/picture/Picture.java
// public class Picture {
//     private String tag1;
//     private String tag2;
//     private int totalNum;
//     private int start_index;
//     private int return_number;
//     private List<Data> data;
// 
//     public String getTag1() {
//         return tag1;
//     }
// 
//     public void setTag1(String tag1) {
//         this.tag1 = tag1;
//     }
// 
//     public String getTag2() {
//         return tag2;
//     }
// 
//     public void setTag2(String tag2) {
//         this.tag2 = tag2;
//     }
// 
//     public int getTotalNum() {
//         return totalNum;
//     }
// 
//     public void setTotalNum(int totalNum) {
//         this.totalNum = totalNum;
//     }
// 
//     public int getStart_index() {
//         return start_index;
//     }
// 
//     public void setStart_index(int start_index) {
//         this.start_index = start_index;
//     }
// 
//     public int getReturn_number() {
//         return return_number;
//     }
// 
//     public void setReturn_number(int return_number) {
//         this.return_number = return_number;
//     }
// 
//     public List<Data> getData() {
//         return data;
//     }
// 
//     public void setData(List<Data> data) {
//         this.data = data;
//     }
// 
// }
// 
// Path: app/src/main/java/com/example/app/rxjava/module/main/model/WaterfallModel.java
// public class WaterfallModel extends BaseModel implements WaterfallIA {
//     private static final String ENDPOINT = "http://image.baidu.com";
//     private final Service mService;
// 
//     public static final int ROWNUM = 30;
// 
//     public WaterfallModel() {
//         // 对返回的数据进行解析
//         Gson gsonInstance = new GsonBuilder()
//                 .registerTypeAdapter(new TypeToken<Picture>() {
//                         }.getType(),
//                         new ResultsDeserializer<Picture>())
//                 .create();
// 
//         // 适配器
//         Retrofit mRetrofit = getRetrofitBuilder()
//                 .baseUrl(ENDPOINT)
//                 .addConverterFactory(GsonConverterFactory.create(gsonInstance))
//                 .build();
// 
//         // 服务
//         mService = mRetrofit.create(Service.class);
//     }
// 
//     @Override
//     public Observable<Picture> getServerData(int pageNum) {
//         return mService.getData(pageNum, ROWNUM, "宠物", "全部");
//     }
// 
//     /**
//      * 服务接口
//      */
//     private interface Service {
// 
//         @GET("/channel/listjson")
//         Observable<Picture> getData(@Query("pn") int pn, @Query("rn") int rn, @Query("tag1") String tag1, @Query("tag2") String tag2);
// 
//     }
// }
// 
// Path: app/src/main/java/com/example/app/rxjava/module/main/model/ia/WaterfallIA.java
// public interface WaterfallIA {
//     public Observable<Picture> getServerData(int pageNum);
// }
// 
// Path: app/src/main/java/com/example/app/rxjava/module/main/view/ia/WaterfallViewIA.java
// public interface WaterfallViewIA extends BaseViewIA {
//     void refresh(List<String> data);
//     void loadNews(List<String> data);
// }


// Path: app/src/main/java/com/example/app/rxjava/module/main/presenter/WaterfallPresenter.java
import com.example.app.rxjava.bean.picture.Data;
import com.example.app.rxjava.bean.picture.Picture;
import com.example.app.rxjava.module.main.model.WaterfallModel;
import com.example.app.rxjava.module.main.model.ia.WaterfallIA;
import com.example.app.rxjava.module.main.view.ia.WaterfallViewIA;
import java.util.ArrayList;
import java.util.List;
import rx.Observable;
import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Action0;
import rx.functions.Func1;
import rx.schedulers.Schedulers;

                .subscribeOn(AndroidSchedulers.mainThread()) // 指定主线程
                .observeOn(AndroidSchedulers.mainThread())// 在UI线程中执行结果
                .subscribe(new Subscriber<List<String>>() {
                    @Override
                    public void onNext(List<String> data) {
                        if(pageNum == 0) {
                            mWaterfallViewIA.refresh(data);
                        } else {
                            mWaterfallViewIA.loadNews(data);
                        }
                    }

                    @Override
                    public void onError(Throwable e) {
                        mWaterfallViewIA.showError(e.getMessage());
                        mWaterfallViewIA.hideProgressDialog();
                    }

                    @Override
                    public void onCompleted() {
                        mWaterfallViewIA.hideProgressDialog();
                    }
                });
    }

    /**
     * 得到网页中图片的地址
     */
    public List<String> getImageList(Picture picture) {
        List<String> imgList = new ArrayList<String>();
        List<Data> list = picture.getData();