// Path: app/src/main/java/com/example/app/rxjava/bean/weather/WeatherData.java
// @ModelContainer
// @Table(database = AppDatabase.class)
// public class WeatherData extends BaseModel {
// 	@PrimaryKey(autoincrement = false)
//     private long id;
// 	@Column
//     private String name;
// 
// 	public long getId() {
// 		return id;
// 	}
// 
// 	public void setId(long id) {
// 		this.id = id;
// 	}
// 
// 	public String getName() {
// 		return name;
// 	}
// 
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// 
// }
// 
// Path: app/src/main/java/com/example/app/rxjava/module/main/model/WeatherModel.java
// public class WeatherModel extends BaseModel implements WeatherIA {
//     private static final String ENDPOINT = "http://api.openweathermap.org";
//     private final Service mService;
// 
//     public WeatherModel() {
//         // 对返回的数据进行解析
//         Gson gsonInstance = new GsonBuilder()
//                 .registerTypeAdapter(new TypeToken<WeatherListData>() {
//                         }.getType(),
//                         new ResultsDeserializer<WeatherListData>())
//                 .create();
// 
//         // 适配器
//         Retrofit mRetrofit = getRetrofitBuilder()
//                 .baseUrl(ENDPOINT)
//                 .addConverterFactory(GsonConverterFactory.create(gsonInstance))
//                 .build();
// 
//         // 服务
//         mService = mRetrofit.create(Service.class);
//     }
//     public Observable<List<WeatherData>> getServerData(final String lat, final String lon, final String cnt) {
//         return mService.getWeatherList(lat, lon, cnt, "82baf3673f8b23cb70d1165d3ce73b9c")
//                 .flatMap(new Func1<WeatherListData, Observable<List<WeatherData>>>() {
//                     @Override
//                     public Observable<List<WeatherData>> call(WeatherListData data) {
//                         List<WeatherData> list = data.getList();
//                         return Observable.just(list);
//                     }
//                 });
//     }
// 
//     /**
//      * 服务接口
//      */
//     private interface Service {
// 
//         @GET("/data/2.5/find")
//         Observable<WeatherListData> getWeatherList(@Query("lat") String lat, @Query("lon") String lon, @Query("cnt") String cnt, @Query("APPID") String appId);
// 
//     }
// }
// 
// Path: app/src/main/java/com/example/app/rxjava/module/main/model/ia/WeatherIA.java
// public interface WeatherIA {
//     public Observable<List<WeatherData>> getServerData(final String lat, final String lon, final String cnt);
// }
// 
// Path: app/src/main/java/com/example/app/rxjava/module/main/view/ia/WeatherListViewIA.java
// public interface WeatherListViewIA extends BaseViewIA {
//     void refresh(List<WeatherData> data);
//     void loadNews(List<WeatherData> data);
// }


import com.example.app.rxjava.bean.weather.WeatherData;
import com.example.app.rxjava.module.main.model.WeatherModel;
import com.example.app.rxjava.module.main.model.ia.WeatherIA;
import com.example.app.rxjava.module.main.view.ia.WeatherListViewIA;
import java.util.List;
import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Action0;
import rx.schedulers.Schedulers;
package com.example.app.rxjava.module.main.presenter;




/**
 * Created by Administrator on 2016/2/29.
 */
public class WeatherListPresenter {
    private WeatherListViewIA mWeatherListViewIA;
    private WeatherIA mWeatherIA;
    private static final String LAT = "55.5", LON = "37.5", CNT = "10";

    public WeatherListPresenter(WeatherListViewIA mWeatherListViewIA) {
        this.mWeatherListViewIA = mWeatherListViewIA;
        this.mWeatherIA = new WeatherModel();
    }

    public void loadData(final int pageNum) {
        mWeatherIA.getServerData(LAT, LON, CNT)
                .subscribeOn(Schedulers.io())// 在非UI线程中执行getUser
                .doOnSubscribe(new Action0() {
                    @Override
                    public void call() {
                        mWeatherListViewIA.showProgressDialog(); // 需要在主线程执行
                    }
                })
                .subscribeOn(AndroidSchedulers.mainThread()) // 指定主线程
                .observeOn(AndroidSchedulers.mainThread())// 在UI线程中执行结果
// Path: app/src/main/java/com/example/app/rxjava/bean/weather/WeatherData.java
// @ModelContainer
// @Table(database = AppDatabase.class)
// public class WeatherData extends BaseModel {
// 	@PrimaryKey(autoincrement = false)
//     private long id;
// 	@Column
//     private String name;
// 
// 	public long getId() {
// 		return id;
// 	}
// 
// 	public void setId(long id) {
// 		this.id = id;
// 	}
// 
// 	public String getName() {
// 		return name;
// 	}
// 
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// 
// }
// 
// Path: app/src/main/java/com/example/app/rxjava/module/main/model/WeatherModel.java
// public class WeatherModel extends BaseModel implements WeatherIA {
//     private static final String ENDPOINT = "http://api.openweathermap.org";
//     private final Service mService;
// 
//     public WeatherModel() {
//         // 对返回的数据进行解析
//         Gson gsonInstance = new GsonBuilder()
//                 .registerTypeAdapter(new TypeToken<WeatherListData>() {
//                         }.getType(),
//                         new ResultsDeserializer<WeatherListData>())
//                 .create();
// 
//         // 适配器
//         Retrofit mRetrofit = getRetrofitBuilder()
//                 .baseUrl(ENDPOINT)
//                 .addConverterFactory(GsonConverterFactory.create(gsonInstance))
//                 .build();
// 
//         // 服务
//         mService = mRetrofit.create(Service.class);
//     }
//     public Observable<List<WeatherData>> getServerData(final String lat, final String lon, final String cnt) {
//         return mService.getWeatherList(lat, lon, cnt, "82baf3673f8b23cb70d1165d3ce73b9c")
//                 .flatMap(new Func1<WeatherListData, Observable<List<WeatherData>>>() {
//                     @Override
//                     public Observable<List<WeatherData>> call(WeatherListData data) {
//                         List<WeatherData> list = data.getList();
//                         return Observable.just(list);
//                     }
//                 });
//     }
// 
//     /**
//      * 服务接口
//      */
//     private interface Service {
// 
//         @GET("/data/2.5/find")
//         Observable<WeatherListData> getWeatherList(@Query("lat") String lat, @Query("lon") String lon, @Query("cnt") String cnt, @Query("APPID") String appId);
// 
//     }
// }
// 
// Path: app/src/main/java/com/example/app/rxjava/module/main/model/ia/WeatherIA.java
// public interface WeatherIA {
//     public Observable<List<WeatherData>> getServerData(final String lat, final String lon, final String cnt);
// }
// 
// Path: app/src/main/java/com/example/app/rxjava/module/main/view/ia/WeatherListViewIA.java
// public interface WeatherListViewIA extends BaseViewIA {
//     void refresh(List<WeatherData> data);
//     void loadNews(List<WeatherData> data);
// }


// Path: app/src/main/java/com/example/app/rxjava/module/main/presenter/WeatherListPresenter.java
import com.example.app.rxjava.bean.weather.WeatherData;
import com.example.app.rxjava.module.main.model.WeatherModel;
import com.example.app.rxjava.module.main.model.ia.WeatherIA;
import com.example.app.rxjava.module.main.view.ia.WeatherListViewIA;
import java.util.List;
import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Action0;
import rx.schedulers.Schedulers;

package com.example.app.rxjava.module.main.presenter;




/**
 * Created by Administrator on 2016/2/29.
 */
public class WeatherListPresenter {
    private WeatherListViewIA mWeatherListViewIA;
    private WeatherIA mWeatherIA;
    private static final String LAT = "55.5", LON = "37.5", CNT = "10";

    public WeatherListPresenter(WeatherListViewIA mWeatherListViewIA) {
        this.mWeatherListViewIA = mWeatherListViewIA;
        this.mWeatherIA = new WeatherModel();
    }

    public void loadData(final int pageNum) {
        mWeatherIA.getServerData(LAT, LON, CNT)
                .subscribeOn(Schedulers.io())// 在非UI线程中执行getUser
                .doOnSubscribe(new Action0() {
                    @Override
                    public void call() {
                        mWeatherListViewIA.showProgressDialog(); // 需要在主线程执行
                    }
                })
                .subscribeOn(AndroidSchedulers.mainThread()) // 指定主线程
                .observeOn(AndroidSchedulers.mainThread())// 在UI线程中执行结果
                .subscribe(new Subscriber<List<WeatherData>>() {