From 24dcab60a682db553dd770f8b8d827df98a27e32 Mon Sep 17 00:00:00 2001 From: Hugo <446022570@qq.com> Date: Sat, 3 Jun 2017 19:10:33 +0800 Subject: [PATCH] divide the weather object --- .../modules/city/ui/ChoiceCityActivity.java | 4 +- .../modules/main/adapter/WeatherAdapter.java | 4 +- .../modules/main/domain/AqiEntity.java | 10 + .../modules/main/domain/BasicEntity.java | 9 + .../modules/main/domain/CityEntity.java | 23 ++ .../modules/main/domain/CondEntity.java | 11 + .../main/domain/DailyForecastEntity.java | 32 ++ .../main/domain/HourlyForecastEntity.java | 20 ++ ...MultiUpdate.java => MultiUpdateEvent.java} | 2 +- .../modules/main/domain/NowEntity.java | 24 ++ .../modules/main/domain/SuggestionEntity.java | 96 ++++++ .../modules/main/domain/TmpEntity.java | 11 + .../modules/main/domain/Weather.java | 318 ------------------ .../modules/main/domain/WeatherAPI.java | 6 +- .../modules/main/domain/WindEntity.java | 15 + .../modules/main/ui/MainFragment.java | 71 ++-- .../modules/main/ui/MultiCityFragment.java | 4 +- 17 files changed, 286 insertions(+), 374 deletions(-) create mode 100644 app/src/main/java/com/xiecc/seeWeather/modules/main/domain/AqiEntity.java create mode 100644 app/src/main/java/com/xiecc/seeWeather/modules/main/domain/BasicEntity.java create mode 100644 app/src/main/java/com/xiecc/seeWeather/modules/main/domain/CityEntity.java create mode 100644 app/src/main/java/com/xiecc/seeWeather/modules/main/domain/CondEntity.java create mode 100644 app/src/main/java/com/xiecc/seeWeather/modules/main/domain/DailyForecastEntity.java create mode 100644 app/src/main/java/com/xiecc/seeWeather/modules/main/domain/HourlyForecastEntity.java rename app/src/main/java/com/xiecc/seeWeather/modules/main/domain/{MultiUpdate.java => MultiUpdateEvent.java} (84%) create mode 100644 app/src/main/java/com/xiecc/seeWeather/modules/main/domain/NowEntity.java create mode 100644 app/src/main/java/com/xiecc/seeWeather/modules/main/domain/SuggestionEntity.java create mode 100644 app/src/main/java/com/xiecc/seeWeather/modules/main/domain/TmpEntity.java create mode 100644 app/src/main/java/com/xiecc/seeWeather/modules/main/domain/WindEntity.java diff --git a/app/src/main/java/com/xiecc/seeWeather/modules/city/ui/ChoiceCityActivity.java b/app/src/main/java/com/xiecc/seeWeather/modules/city/ui/ChoiceCityActivity.java index bd7964e..899be97 100644 --- a/app/src/main/java/com/xiecc/seeWeather/modules/city/ui/ChoiceCityActivity.java +++ b/app/src/main/java/com/xiecc/seeWeather/modules/city/ui/ChoiceCityActivity.java @@ -26,7 +26,7 @@ import com.xiecc.seeWeather.modules.city.domain.City; import com.xiecc.seeWeather.modules.city.domain.Province; import com.xiecc.seeWeather.modules.main.domain.ChangeCityEvent; import com.xiecc.seeWeather.modules.main.domain.CityORM; -import com.xiecc.seeWeather.modules.main.domain.MultiUpdate; +import com.xiecc.seeWeather.modules.main.domain.MultiUpdateEvent; import io.reactivex.BackpressureStrategy; import io.reactivex.Flowable; import io.reactivex.FlowableOnSubscribe; @@ -109,7 +109,7 @@ public class ChoiceCityActivity extends ToolbarActivity { String city = Util.replaceCity(cityList.get(pos).mCityName); if (isChecked) { OrmLite.getInstance().save(new CityORM(city)); - RxBus.getDefault().post(new MultiUpdate()); + RxBus.getDefault().post(new MultiUpdateEvent()); } else { SharedPreferenceUtil.getInstance().setCityName(city); RxBus.getDefault().post(new ChangeCityEvent()); diff --git a/app/src/main/java/com/xiecc/seeWeather/modules/main/adapter/WeatherAdapter.java b/app/src/main/java/com/xiecc/seeWeather/modules/main/adapter/WeatherAdapter.java index 30b3bc3..6c38217 100644 --- a/app/src/main/java/com/xiecc/seeWeather/modules/main/adapter/WeatherAdapter.java +++ b/app/src/main/java/com/xiecc/seeWeather/modules/main/adapter/WeatherAdapter.java @@ -270,7 +270,7 @@ public class WeatherAdapter extends AnimRecyclerViewAdapter mWeathers - = new ArrayList<>(); + @SerializedName("HeWeather5") + @Expose + public List mWeathers = new ArrayList<>(); } diff --git a/app/src/main/java/com/xiecc/seeWeather/modules/main/domain/WindEntity.java b/app/src/main/java/com/xiecc/seeWeather/modules/main/domain/WindEntity.java new file mode 100644 index 0000000..8cd361b --- /dev/null +++ b/app/src/main/java/com/xiecc/seeWeather/modules/main/domain/WindEntity.java @@ -0,0 +1,15 @@ +package com.xiecc.seeWeather.modules.main.domain; + +import com.google.gson.annotations.SerializedName; +import java.io.Serializable; + +public class WindEntity implements Serializable { + @SerializedName("deg") + public String deg; + @SerializedName("dir") + public String dir; + @SerializedName("sc") + public String sc; + @SerializedName("spd") + public String spd; +} \ No newline at end of file diff --git a/app/src/main/java/com/xiecc/seeWeather/modules/main/ui/MainFragment.java b/app/src/main/java/com/xiecc/seeWeather/modules/main/ui/MainFragment.java index 0351cea..1dbd517 100644 --- a/app/src/main/java/com/xiecc/seeWeather/modules/main/ui/MainFragment.java +++ b/app/src/main/java/com/xiecc/seeWeather/modules/main/ui/MainFragment.java @@ -14,13 +14,10 @@ import android.widget.ImageView; import android.widget.ProgressBar; import butterknife.BindView; import butterknife.ButterKnife; -import com.amap.api.location.AMapLocation; import com.amap.api.location.AMapLocationClient; import com.amap.api.location.AMapLocationClientOption; -import com.amap.api.location.AMapLocationListener; import com.tbruyelle.rxpermissions2.RxPermissions; import com.xiecc.seeWeather.R; -import com.xiecc.seeWeather.base.BaseApplication; import com.xiecc.seeWeather.base.BaseFragment; import com.xiecc.seeWeather.common.utils.CheckVersion; import com.xiecc.seeWeather.common.utils.RxUtil; @@ -43,7 +40,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers; * GitHub: https://github.com/xcc3641 * Info: */ -public class MainFragment extends BaseFragment implements AMapLocationListener { +public class MainFragment extends BaseFragment { @BindView(R.id.recyclerview) RecyclerView mRecyclerView; @@ -57,8 +54,9 @@ public class MainFragment extends BaseFragment implements AMapLocationListener { private static Weather mWeather = new Weather(); private WeatherAdapter mAdapter; //声明AMapLocationClient类对象 - public AMapLocationClient mLocationClient = null; - public AMapLocationClientOption mLocationOption = null; + + public AMapLocationClient mLocationClient; + public AMapLocationClientOption mLocationOption; private View view; @@ -84,6 +82,7 @@ public class MainFragment extends BaseFragment implements AMapLocationListener { initView(); new RxPermissions(getActivity()) .request(Manifest.permission.ACCESS_COARSE_LOCATION) + .doOnNext(o -> mRefreshLayout.setRefreshing(true)) .doOnNext(granted -> { if (granted) { location(); @@ -98,14 +97,12 @@ public class MainFragment extends BaseFragment implements AMapLocationListener { @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - RxBus.getDefault() .toObservable(ChangeCityEvent.class) .observeOn(AndroidSchedulers.mainThread()) + .filter(event -> isVisible()) .doOnNext(event -> { - if (mRefreshLayout != null) { - mRefreshLayout.setRefreshing(true); - } + mRefreshLayout.setRefreshing(true); load(); }) .subscribe(); @@ -172,55 +169,37 @@ public class MainFragment extends BaseFragment implements AMapLocationListener { * 高德定位 */ private void location() { - mRefreshLayout.setRefreshing(true); //初始化定位 - mLocationClient = new AMapLocationClient(BaseApplication.getAppContext()); - //设置定位回调监听 - mLocationClient.setLocationListener(this); + mLocationClient = new AMapLocationClient(getActivity()); mLocationOption = new AMapLocationClientOption(); - //设置定位模式为高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式 mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Battery_Saving); - //设置是否返回地址信息(默认返回地址信息) mLocationOption.setNeedAddress(true); - //设置是否只定位一次,默认为false\ - mLocationOption.setOnceLocation(false); - //设置是否强制刷新WIFI,默认为强制刷新 - mLocationOption.setWifiActiveScan(true); - //设置是否允许模拟位置,默认为false,不允许模拟位置 - mLocationOption.setMockEnable(false); + mLocationOption.setOnceLocation(true); + mLocationOption.setWifiActiveScan(false); //设置定位间隔 单位毫秒 - int tempTime = SharedPreferenceUtil.getInstance().getAutoUpdate(); - if (tempTime == 0) { - tempTime = 100; - } - mLocationOption.setInterval(tempTime * SharedPreferenceUtil.ONE_HOUR); - //给定位客户端对象设置定位参数 + int autoUpdateTime = SharedPreferenceUtil.getInstance().getAutoUpdate(); + mLocationOption.setInterval((autoUpdateTime == 0 ? 100 : autoUpdateTime) * SharedPreferenceUtil.ONE_HOUR); mLocationClient.setLocationOption(mLocationOption); - //启动定位 - mLocationClient.startLocation(); - } - - @Override - public void onLocationChanged(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (aMapLocation.getErrorCode() == 0) { - //定位成功回调信息,设置相关消息 - aMapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见定位类型表 - SharedPreferenceUtil.getInstance().setCityName(Util.replaceCity(aMapLocation.getCity())); - } else { - if (isAdded()) { - ToastUtil.showShort(getString(R.string.errorLocation)); + mLocationClient.setLocationListener(aMapLocation -> { + if (aMapLocation != null) { + if (aMapLocation.getErrorCode() == 0) { + aMapLocation.getLocationType(); + SharedPreferenceUtil.getInstance().setCityName(Util.replaceCity(aMapLocation.getCity())); + } else { + if (isAdded()) { + ToastUtil.showShort(getString(R.string.errorLocation)); + } } + load(); } - load(); - } + }); + mLocationClient.startLocation(); } @Override public void onDestroy() { super.onDestroy(); - mLocationClient = null; - mLocationOption = null; + mLocationClient.onDestroy(); } /** diff --git a/app/src/main/java/com/xiecc/seeWeather/modules/main/ui/MultiCityFragment.java b/app/src/main/java/com/xiecc/seeWeather/modules/main/ui/MultiCityFragment.java index 84b7f96..40b1ef4 100644 --- a/app/src/main/java/com/xiecc/seeWeather/modules/main/ui/MultiCityFragment.java +++ b/app/src/main/java/com/xiecc/seeWeather/modules/main/ui/MultiCityFragment.java @@ -24,7 +24,7 @@ import com.xiecc.seeWeather.component.RetrofitSingleton; import com.xiecc.seeWeather.component.RxBus; import com.xiecc.seeWeather.modules.main.adapter.MultiCityAdapter; import com.xiecc.seeWeather.modules.main.domain.CityORM; -import com.xiecc.seeWeather.modules.main.domain.MultiUpdate; +import com.xiecc.seeWeather.modules.main.domain.MultiUpdateEvent; import com.xiecc.seeWeather.modules.main.domain.Weather; import io.reactivex.Observable; import io.reactivex.ObservableOnSubscribe; @@ -75,7 +75,7 @@ public class MultiCityFragment extends BaseFragment { public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); RxBus.getDefault() - .toObservable(MultiUpdate.class) + .toObservable(MultiUpdateEvent.class) .doOnNext(event -> multiLoad()) .subscribe(); }