android:layout_width=“match_parent”
android:layout_height=“wrap_content”>
<TextView
android:layout_width=“@dimen/dp_44”
android:layout_height=“wrap_content”
android:gravity=“center”
android:text=“PM10”
android:textColor=“@color/blue_one”
android:textSize=“12sp” />
<com.llw.mvplibrary.view.LineProgressbar
android:id=“@+id/progress_pm10”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_gravity=“center”
app:progressbar_width=“@dimen/dp_80”
app:progressbar_height=“@dimen/dp_10”/>
<TextView
android:id=“@+id/tv_pm10”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:gravity=“center”
android:textColor=“@color/white”
android:textSize=“12sp” />
<LinearLayout
android:gravity=“center_vertical”
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:layout_marginTop=“12dp”>
<TextView
android:layout_width=“@dimen/dp_44”
android:layout_height=“wrap_content”
android:gravity=“center”
android:text=“PM2.5”
android:textColor=“@color/blue_one”
android:textSize=“12sp” />
<com.llw.mvplibrary.view.LineProgressbar
android:id=“@+id/progress_pm25”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_gravity=“center”
app:progressbar_width=“@dimen/dp_80”
app:progressbar_height=“@dimen/dp_10”/>
<TextView
android:id=“@+id/tv_pm25”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:gravity=“center”
android:textColor=“@color/white”
android:textSize=“12sp” />
<LinearLayout
android:gravity=“center_vertical”
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:layout_marginTop=“12dp”>
<LinearLayout
android:layout_width=“@dimen/dp_44”
android:layout_height=“wrap_content”
android:gravity=“center”>
<TextView
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:text=“NO”
android:textColor=“@color/blue_one”
android:textSize=“12sp” />
<TextView
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:text=“2”
android:textColor=“@color/blue_one”
android:textSize=“8sp” />
<com.llw.mvplibrary.view.LineProgressbar
android:id=“@+id/progress_no2”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_gravity=“center”
app:progressbar_width=“@dimen/dp_80”
app:progressbar_height=“@dimen/dp_10”/>
<TextView
android:id=“@+id/tv_no2”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:gravity=“center”
android:textColor=“@color/white”
android:textSize=“12sp” />
<LinearLayout
android:gravity=“center_vertical”
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:layout_marginTop=“12dp”>
<LinearLayout
android:layout_width=“@dimen/dp_44”
android:layout_height=“wrap_content”
android:gravity=“center”>
<TextView
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:text=“SO”
android:textColor=“@color/blue_one”
android:textSize=“12sp” />
<TextView
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:text=“2”
android:textColor=“@color/blue_one”
android:textSize=“8sp” />
<com.llw.mvplibrary.view.LineProgressbar
android:id=“@+id/progress_so2”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_gravity=“center”
app:progressbar_width=“@dimen/dp_80”
app:progressbar_height=“@dimen/dp_10”/>
<TextView
android:id=“@+id/tv_so2”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:gravity=“center”
android:textColor=“@color/white”
android:textSize=“12sp” />
<LinearLayout
android:gravity=“center_vertical”
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:layout_marginTop=“12dp”>
<LinearLayout
android:layout_width=“@dimen/dp_44”
android:layout_height=“wrap_content”
android:gravity=“center”>
<TextView
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:text=“O”
android:textColor=“@color/blue_one”
android:textSize=“12sp” />
<TextView
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:text=“3”
android:textColor=“@color/blue_one”
android:textSize=“8sp” />
<com.llw.mvplibrary.view.LineProgressbar
android:id=“@+id/progress_o3”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_gravity=“center”
app:progressbar_width=“@dimen/dp_80”
app:progressbar_height=“@dimen/dp_10”/>
<TextView
android:id=“@+id/tv_o3”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:gravity=“center”
android:textColor=“@color/white”
android:textSize=“12sp” />
<LinearLayout
android:gravity=“center_vertical”
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:layout_marginTop=“12dp”>
<TextView
android:layout_width=“@dimen/dp_44”
android:layout_height=“wrap_content”
android:gravity=“center”
android:text=“CO”
android:textColor=“@color/blue_one”
android:textSize=“12sp” />
<com.llw.mvplibrary.view.LineProgressbar
android:id=“@+id/progress_co”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_gravity=“center”
app:progressbar_width=“@dimen/dp_80”
app:progressbar_height=“@dimen/dp_10”/>
<TextView
android:id=“@+id/tv_co”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:gravity=“center”
android:textColor=“@color/white”
android:textSize=“12sp” />
<TextView
android:layout_marginLeft=“@dimen/dp_12”
android:text=“监测站空气质量”
android:textColor=“@color/white”
android:textSize=“@dimen/sp_16”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”/>
<androidx.recyclerview.widget.RecyclerView
android:id=“@+id/rv_station”
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:overScrollMode=“never” />
<TextView
android:layout_marginLeft=“@dimen/dp_12”
android:text=“未来5天空气质量预报”
android:textColor=“@color/white”
android:textSize=“@dimen/sp_16”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”/>
<androidx.recyclerview.widget.RecyclerView
android:id=“@+id/rv_five_air”
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:layout_marginBottom=“@dimen/dp_12”
android:overScrollMode=“never” />
</androidx.core.widget.NestedScrollView>
现在可以创建item的布局文件里,这里面有两个列表,自然就需要两个item的布局,
先来看第一个的布局,在layout下新建一个item_more_air_station_list.xml,这个用于展示检测站的空气质量。代码如下:
<?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=“wrap_content”
android:orientation=“vertical”
android:padding=“@dimen/dp_12”>
<LinearLayout
android:layout_width=“match_parent”
android:layout_height=“match_parent”
android:background=“@drawable/shape_transparent_12”
android:gravity=“center_horizontal”
android:orientation=“vertical”
android:padding=“@dimen/dp_12”>
<TextView
android:id=“@+id/tv_station_name”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:textColor=“@color/white”
android:textSize=“@dimen/sp_18” />
<LinearLayout
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:layout_marginTop=“@dimen/dp_20”
android:orientation=“vertical”>
<LinearLayout
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:orientation=“horizontal”>
<TextView
android:layout_width=“0dp”
android:layout_height=“wrap_content”
android:layout_weight=“1”
android:gravity=“center”
android:text=“空气质量”
android:textColor=“@color/blue_one”
android:textSize=“12sp” />
<TextView
android:id=“@+id/tv_air_category”
android:layout_width=“0dp”
android:layout_height=“wrap_content”
android:layout_weight=“1”
android:gravity=“center”
android:textColor=“@color/white”
android:textSize=“12sp” />
<LinearLayout
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:layout_marginTop=“@dimen/dp_12”
android:orientation=“horizontal”>
<TextView
android:layout_width=“0dp”
android:layout_height=“wrap_content”
android:layout_weight=“1”
android:gravity=“center”
android:text=“空气质量指数”
android:textColor=“@color/blue_one”
android:textSize=“12sp” />
<TextView
android:id=“@+id/tv_aqi”
android:layout_width=“0dp”
android:layout_height=“wrap_content”
android:layout_weight=“1”
android:gravity=“center”
android:textColor=“@color/white”
android:textSize=“12sp” />
<LinearLayout
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:layout_marginTop=“@dimen/dp_12”
android:orientation=“horizontal”>
<TextView
android:layout_width=“0dp”
android:layout_height=“wrap_content”
android:layout_weight=“1”
android:gravity=“center”
android:text=“主要污染物”
android:textColor=“@color/blue_one”
android:textSize=“12sp” />
<TextView
android:id=“@+id/tv_primary”
android:layout_width=“0dp”
android:layout_height=“wrap_content”
android:layout_weight=“1”
android:gravity=“center”
android:textColor=“@color/white”
android:textSize=“12sp” />
<LinearLayout
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:layout_marginTop=“12dp”>
<TextView
android:layout_width=“0dp”
android:layout_height=“wrap_content”
android:layout_weight=“1”
android:gravity=“center”
android:text=“PM10”
android:textColor=“@color/blue_one”
android:textSize=“12sp” />
<TextView
android:id=“@+id/tv_pm10”
android:layout_width=“0dp”
android:layout_height=“wrap_content”
android:layout_weight=“1”
android:gravity=“center”
android:textColor=“@color/white”
android:textSize=“12sp” />
<LinearLayout
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:layout_marginTop=“12dp”>
<TextView
android:layout_width=“0dp”
android:layout_height=“wrap_content”
android:layout_weight=“1”
android:gravity=“center”
android:text=“PM2.5”
android:textColor=“@color/blue_one”
android:textSize=“12sp” />
<TextView
android:id=“@+id/tv_pm25”
android:layout_width=“0dp”
android:layout_height=“wrap_content”
android:layout_weight=“1”
android:gravity=“center”
android:textColor=“@color/white”
android:textSize=“12sp” />
<LinearLayout
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:layout_marginTop=“12dp”>
<TextView
android:layout_width=“0dp”
android:layout_height=“wrap_content”
android:layout_weight=“1”
android:gravity=“center”
android:text=“二氧化氮”
android:textColor=“@color/blue_one”
android:textSize=“12sp” />
<TextView
android:id=“@+id/tv_no2”
android:layout_width=“0dp”
android:layout_height=“wrap_content”
android:layout_weight=“1”
android:gravity=“center”
android:textColor=“@color/white”
android:textSize=“12sp” />
<LinearLayout
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:layout_marginTop=“12dp”>
<TextView
android:layout_width=“0dp”
android:layout_height=“wrap_content”
android:layout_weight=“1”
android:gravity=“center”
android:text=“二氧化硫”
android:textColor=“@color/blue_one”
android:textSize=“12sp” />
<TextView
android:id=“@+id/tv_so2”
android:layout_width=“0dp”
android:layout_height=“wrap_content”
android:layout_weight=“1”
android:gravity=“center”
android:textColor=“@color/white”
android:textSize=“12sp” />
<LinearLayout
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:layout_marginTop=“12dp”>
<TextView
android:layout_width=“0dp”
android:layout_height=“wrap_content”
android:layout_weight=“1”
android:gravity=“center”
android:text=“一氧化碳”
android:textColor=“@color/blue_one”
android:textSize=“12sp” />
<TextView
android:id=“@+id/tv_o3”
android:layout_width=“0dp”
android:layout_height=“wrap_content”
android:layout_weight=“1”
android:gravity=“center”
android:textColor=“@color/white”
android:textSize=“12sp” />
<LinearLayout
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:layout_marginTop=“12dp”>
<TextView
android:layout_width=“0dp”
android:layout_height=“wrap_content”
android:layout_weight=“1”
android:gravity=“center”
android:text=“臭氧”
android:textColor=“@color/blue_one”
android:textSize=“12sp” />
<TextView
android:id=“@+id/tv_co”
android:layout_width=“0dp”
android:layout_height=“wrap_content”
android:layout_weight=“1”
android:gravity=“center”
android:textColor=“@color/white”
android:textSize=“12sp” />
比较的简单,下面在layout下创建item_more_air_five_list.xml,用于展示当前城市未来五天的空气质量预报。布局如下:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:orientation=“vertical”
android:padding=“@dimen/dp_12”>
<LinearLayout
android:layout_width=“wrap_content”
android:layout_height=“match_parent”
android:background=“@drawable/shape_transparent_12”
android:gravity=“center_horizontal”
android:orientation=“vertical”
android:padding=“@dimen/dp_12”>
<LinearLayout
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:gravity=“center”
android:orientation=“vertical”>
<TextView
android:id=“@+id/tv_date_info”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:textColor=“@color/white”
android:textSize=“@dimen/sp_18” />
<TextView
android:id=“@+id/tv_date”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:textColor=“@color/white”
android:textSize=“@dimen/sp_14” />
<LinearLayout
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”>
<TextView
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:text=“AQI指数”
android:textColor=“@color/white” />
<TextView
android:id=“@+id/tv_aqi”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_marginLeft=“@dimen/dp_20”
android:text=“空气质量”
android:textColor=“@color/white” />
<LinearLayout
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_marginTop=“@dimen/dp_4”>
<TextView
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:text=“空气质量”
android:textColor=“@color/white” />
<TextView
android:id=“@+id/tv_category”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_marginLeft=“@dimen/dp_20”
android:text=“空气质量”
android:textColor=“@color/white” />
<LinearLayout
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_marginTop=“@dimen/dp_4”>
<TextView
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:text=“污染物”
android:textColor=“@color/white” />
<TextView
android:id=“@+id/tv_primary”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_marginLeft=“@dimen/dp_20”
android:text=“空气质量”
android:textColor=“@color/white” />
因为这个查询多天的空气质量之前并没有写上去,所以要在ApiService中新增一个,同时需要在app的bean包下面新建一个数据实体MoreAirFiveResponse,代码如下:
package com.llw.goodweather.bean;
import java.util.List;
public class MoreAirFiveResponse {
/**
-
code : 200
-
updateTime : 2020-08-06T09:28+08:00
-
fxLink : http://hfx.link/2ax4
-
daily : [{“fxDate”:“2020-08-06”,“aqi”:“60”,“level”:“2”,“category”:“良”,“primary”:“NA”},{“fxDate”:“2020-08-07”,“aqi”:“90”,“level”:“2”,“category”:“良”,“primary”:“NA”},{“fxDate”:“2020-08-08”,“aqi”:“100”,“level”:“2”,“category”:“良”,“primary”:“NA”},{“fxDate”:“2020-08-09”,“aqi”:“110”,“level”:“3”,“category”:“轻度污染”,“primary”:“NA”},{“fxDate”:“2020-08-10”,“aqi”:“90”,“level”:“2”,“category”:“良”,“primary”:“NA”}]
-
refer : {“sources”:[“cnemc”],“license”:[“no commercial use”]}
*/
private String code;
private String updateTime;
private String fxLink;
private ReferBean refer;
private List daily;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getUpdateTime() {
return updateTime;
}
public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
}
public String getFxLink() {
return fxLink;
}
public void setFxLink(String fxLink) {
this.fxLink = fxLink;
}
public ReferBean getRefer() {
return refer;
}
public void setRefer(ReferBean refer) {
this.refer = refer;
}
public List getDaily() {
return daily;
}
public void setDaily(List daily) {
this.daily = daily;
}
public static class ReferBean {
private List sources;
private List license;
public List getSources() {
return sources;
}
public void setSources(List sources) {
this.sources = sources;
}
public List getLicense() {
return license;
}
public void setLicense(List license) {
this.license = license;
}
}
public static class DailyBean {
/**
-
fxDate : 2020-08-06
-
aqi : 60
-
level : 2
-
category : 良
-
primary : NA
*/
private String fxDate;
private String aqi;
private String level;
private String category;
private String primary;
public String getFxDate() {
return fxDate;
}
public void setFxDate(String fxDate) {
this.fxDate = fxDate;
}
public String getAqi() {
return aqi;
}
public void setAqi(String aqi) {
this.aqi = aqi;
}
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getPrimary() {
return primary;
}
public void setPrimary(String primary) {
this.primary = primary;
}
}
}
ApiService中新增如下接口
/**
-
空气质量5天预报
-
@param location 城市id
-
@return 返回空气质量5天预报数据
*/
@GET(“/v7/air/5d?key=3086e91d66c04ce588a7f538f917c7f4”)
Call airFiveWeather(@Query(“location”) String location);
现在可以创建一个新的订阅器了,在app的contract包下新建一个MoreAirContract,代码如下:
package com.llw.goodweather.contract;
import com.llw.goodweather.api.ApiService;
import com.llw.goodweather.bean.AirNowResponse;
import com.llw.goodweather.bean.DailyResponse;
import com.llw.goodweather.bean.MoreAirFiveResponse;
import com.llw.goodweather.bean.NewSearchCityResponse;
import com.llw.mvplibrary.base.BasePresenter;
import com.llw.mvplibrary.base.BaseView;
import com.llw.mvplibrary.net.NetCallBack;
import com.llw.mvplibrary.net.ServiceGenerator;
import retrofit2.Call;
import retrofit2.Response;
/**
- 更多空气质量数据订阅器
*/
public class MoreAirContract {
public static class MoreAirPresenter extends BasePresenter {
/**
-
搜索城市 搜索站点的城市id,用于查询空气质量
-
@param location 城市名
*/
public void searchCityId(String location) {//注意这里的4表示新的搜索城市地址接口
ApiService service = ServiceGenerator.createService(ApiService.class, 4);//指明访问的地址
service.newSearchCity(location,“exact”).enqueue(new NetCallBack() {
@Override
public void onSuccess(Call call, Response response) {
if(getView() != null){
getView().getSearchCityIdResult(response);
}
}
@Override
public void onFailed() {
if(getView() != null){
getView().getDataFailed();
}
}
});
}
/**
-
空气质量 V7
-
@param location 城市id
*/
public void air(String location) {
ApiService service = ServiceGenerator.createService(ApiService.class,3);
service.airNowWeather(location).enqueue(new NetCallBack() {
@Override
public void onSuccess(Call call, Response response) {
if(getView() != null){
getView().getMoreAirResult(response);
}
}
@Override
public void onFailed() {
if(getView() != null){
getView().getDataFailed();
}
}
});
}
/**
-
五天空气质量数据 V7
-
@param location 城市id
*/
public void airFive(String location) {
ApiService service = ServiceGenerator.createService(ApiService.class,3);
service.airFiveWeather(location).enqueue(new NetCallBack() {
@Override
public void onSuccess(Call call, Response response) {
if(getView() != null){
getView().getMoreAirFiveResult(response);
}
}
@Override
public void onFailed() {
if(getView() != null){
getView().getDataFailed();
}
}
});
}
}
public interface IMoreAirView extends BaseView {
//搜索城市Id
void getSearchCityIdResult(Response response);
//空气质量返回数据 V7
void getMoreAirResult(Response response);
//五天空气质量数据返回 V7
void getMoreAirFiveResult(Response response);
//错误返回
void getDataFailed();
}
}
里面有三个请求和返回以及一个异常返回,因为空气质量比较特殊,所以我需要先使用搜索城市接口,将MainActivity中传递过来的上级城市(监测站)先查询一次,得到这个城市的id,再通过这个id去请求当前空气质量和未来五天空气质量的接口,这样才能拿到数据。以便于展示。
下面创建两个列表数据适配器,在app的adapter包下新建MoreAirStationAdapter,用于展示检测站点的数据
package com.llw.goodweather.adapter;
import androidx.annotation.Nullable;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.llw.goodweather.R;
import com.llw.goodweather.bean.AirNowResponse;
import java.util.List;
/**
- 更多空气质量之空气站点列表适配器
*/
public class MoreAirStationAdapter extends BaseQuickAdapter<AirNowResponse.StationBean, BaseViewHolder> {
public MoreAirStationAdapter(int layoutResId, @Nullable List<AirNowResponse.StationBean> data) {
super(layoutResId, data);
}
@Override
protected void convert(BaseViewHolder helper, AirNowResponse.StationBean item) {
helper.setText(R.id.tv_station_name, item.getName())//监测站名称
.setText(R.id.tv_air_category, item.getCategory())//空气质量
.setText(R.id.tv_aqi, item.getAqi())//空气质量指数
.setText(R.id.tv_primary, item.getPrimary().equals(“NA”) ? “无污染” : item.getPrimary())//污染物
.setText(R.id.tv_pm10, item.getPm10())//pm10
.setText(R.id.tv_pm25, item.getPm2p5())//pm2.5
.setText(R.id.tv_no2, item.getNo2())//二氧化氮
.setText(R.id.tv_so2, item.getSo2())//二氧化硫
.setText(R.id.tv_o3, item.getO3())//臭氧
.setText(R.id.tv_co, item.getCo());//一氧化碳
}
}
OK,再创建一个MoreAirFiveAdapter,代码如下:
package com.llw.goodweather.adapter;
import androidx.annotation.Nullable;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.llw.goodweather.R;
import com.llw.goodweather.bean.MoreAirFiveResponse;
import com.llw.goodweather.utils.DateUtils;
import java.util.List;
/**
- 5天空气质量预报适配器
*/
public class MoreAirFiveAdapter extends BaseQuickAdapter<MoreAirFiveResponse.DailyBean, BaseViewHolder> {
public MoreAirFiveAdapter(int layoutResId, @Nullable List<MoreAirFiveResponse.DailyBean> data) {
super(layoutResId, data);
}
@Override
protected void convert(BaseViewHolder helper, MoreAirFiveResponse.DailyBean item) {
helper.setText(R.id.tv_date_info, DateUtils.Week(item.getFxDate()))//日期描述
.setText(R.id.tv_date, DateUtils.dateSplit(item.getFxDate()))//日期
.setText(R.id.tv_aqi,item.getAqi())//空气质量指数
.setText(R.id.tv_category,item.getCategory())//空气质量描述
.setText(R.id.tv_primary, item.getPrimary().equals(“NA”) ? “无污染” : item.getPrimary());//污染物
}
}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
结尾
最后小编想说:不论以后选择什么方向发展,目前重要的是把Android方面的技术学好,毕竟其实对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!
当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
想要拿高薪实现技术提升薪水得到质的飞跃。最快捷的方式,就是有人可以带着你一起分析,这样学习起来最为高效,所以为了大家能够顺利进阶中高级、架构师,我特地为大家准备了一套高手学习的源码和框架视频等精品Android架构师教程,保证你学了以后保证薪资上升一个台阶。
当你有了学习线路,学习哪些内容,也知道以后的路怎么走了,理论看多了总要实践的。
高级UI,自定义View
UI这块知识是现今使用者最多的。当年火爆一时的Android入门培训,学会这小块知识就能随便找到不错的工作了。
不过很显然现在远远不够了,拒绝无休止的CV,亲自去项目实战,读源码,研究原理吧!
本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!文章来源:https://www.toymoban.com/news/detail-852746.html
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算文章来源地址https://www.toymoban.com/news/detail-852746.html
.id.tv_category,item.getCategory())//空气质量描述
.setText(R.id.tv_primary, item.getPrimary().equals(“NA”) ? “无污染” : item.getPrimary());//污染物
}
}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-6ouYveBS-1712099849262)]
[外链图片转存中…(img-dfg92Gjw-1712099849263)]
[外链图片转存中…(img-eyB8XaZh-1712099849263)]
[外链图片转存中…(img-6M18rayr-1712099849264)]
[外链图片转存中…(img-by9coDok-1712099849264)]
[外链图片转存中…(img-y5eQnb6p-1712099849264)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
[外链图片转存中…(img-4wHdTOtB-1712099849265)]
结尾
最后小编想说:不论以后选择什么方向发展,目前重要的是把Android方面的技术学好,毕竟其实对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!
当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
想要拿高薪实现技术提升薪水得到质的飞跃。最快捷的方式,就是有人可以带着你一起分析,这样学习起来最为高效,所以为了大家能够顺利进阶中高级、架构师,我特地为大家准备了一套高手学习的源码和框架视频等精品Android架构师教程,保证你学了以后保证薪资上升一个台阶。
当你有了学习线路,学习哪些内容,也知道以后的路怎么走了,理论看多了总要实践的。
[外链图片转存中…(img-zTxG0vEg-1712099849265)]
高级UI,自定义View
UI这块知识是现今使用者最多的。当年火爆一时的Android入门培训,学会这小块知识就能随便找到不错的工作了。
不过很显然现在远远不够了,拒绝无休止的CV,亲自去项目实战,读源码,研究原理吧!
[外链图片转存中…(img-rJEz2Bh3-1712099849265)]
本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
到了这里,关于Android 天气APP(二十二)改动些许UI,职场中的中年危机的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!