3分钟
7.4实施步骤
实施步骤
表7-4-1 JSON文件数据格式
[ {"temp":"20℃/30℃","weather":"多云","name":"重庆","pm":"80","wind":"1级"},
{"temp":"15℃/24℃","weather":"晴","name":"北京","pm":"265","wind":"3级"},
{"temp":"26℃/32℃","weather":"多云","name":"成都","pm":"30","wind":"2级"}]表7-4-2 activity_main.xml布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/weather"
tools:context=".MainActivity">
<TextView
android:id="@+id/tv_city"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignEnd="@+id/tv_weather"
android:layout_alignParentTop="true"
android:layout_alignRight="@+id/tv_weather"
android:layout_marginTop="39dp"
android:text="广州"
android:textSize="50sp"/>
<ImageView
android:id="@+id/iv_icon"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_alignLeft="@+id/ll_btn"
android:layout_alignStart="@+id/ll_btn"
android:layout_below="@+id/tv_city"
android:layout_marginLeft="44dp"
android:layout_marginStart="44dp"
android:layout_marginTop="42dp"
android:paddingBottom="5dp"
android:src="@mipmap/ic_launcher"/>
<TextView
android:id="@+id/tv_weather"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/iv_icon"
android:layout_below="@+id/iv_icon"
android:layout_marginRight="15dp"
android:layout_marginTop="18dp"
android:gravity="center"
android:text="多云"
android:textSize="18sp"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/iv_icon"
android:layout_marginLeft="39dp"
android:layout_marginStart="39dp"
android:layout_toEndOf="@+id/iv_icon"
android:layout_toRightOf="@+id/iv_icon"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/tv_temp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center_vertical"
android:text="-7℃"
android:textSize="22sp"/>
<TextView
android:id="@+id/tv_wind"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="风力:3级"
android:textSize="18sp"/>
<TextView
android:id="@+id/tv_pm"
android:layout_width="73dp"
android:layout_height="wrap_content"
android:text="pm"
android:textSize="18sp"/>
</LinearLayout>
<LinearLayout
android:id="@+id/ll_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:orientation="horizontal">
<Button
android:id="@+id/btn_cq"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="重庆"/>
<Button
android:id="@+id/btn_bj"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="北京"/>
<Button
android:id="@+id/btn_cd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="成都"/>
</LinearLayout>
</RelativeLayout>表7-4-3 WeatherInfo类
package com.temp.administrator.weathegetfromjson;
public class WeatherInfo {
private String id;
private String temp;
private String weather;
private String name;
private String pm;
private String wind;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTemp() {
return temp;
}
public void setTemp(String temp) {
this.temp = temp;
}
public String getWeather() {
return weather;
}
public void setWeather(String weather) {
this.weather = weather;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPm() {
return pm;
}
public void setPm(String pm) {
this.pm = pm;
}
public String getWind() {
return wind;
}
public void setWind(String wind) {
this.wind = wind;
}
}表7-4-5 MainActivity.java主程序
package com.temp.administrator.weathegetfromjson;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private TextView tvCity;
private TextView tvWeather;
private TextView tvTemp;
private TextView tvWind;
private TextView tvPm;
private ImageView ivIcon;
private Map<String, String> map;
private List<Map<String, String>> list;
private String temp, weather, name, pm, wind;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
try {
InputStream is = this.getResources().openRawResource(R.raw.weather1);
List<WeatherInfo> weatherInfos = WeatherService.getInfosFromJson(is);
list = new ArrayList<Map<String, String>>();
for (WeatherInfo info : weatherInfos) {
map = new HashMap<String, String>();
map.put("temp", info.getTemp());
map.put("weather", info.getWeather());
map.put("name", info.getName());
map.put("pm", info.getPm());
map.put("wind", info.getWind());
list.add(map);
}
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "解析失败", Toast.LENGTH_SHORT).show();
}
getMap(1, R.drawable.sun);
}
private void initView() {
tvCity = (TextView) findViewById(R.id.tv_city);
tvWeather = (TextView) findViewById(R.id.tv_weather);
tvTemp = (TextView) findViewById(R.id.tv_temp);
tvWind = (TextView) findViewById(R.id.tv_wind);
tvPm = (TextView) findViewById(R.id.tv_pm);
ivIcon = (ImageView) findViewById(R.id.iv_icon);
findViewById(R.id.btn_cq).setOnClickListener(this);
findViewById(R.id.btn_bj).setOnClickListener(this);
findViewById(R.id.btn_cd).setOnClickListener(this);
}
@Override
public void onClick(View v) { //按钮的点击事件
switch (v.getId()) {
case R.id.btn_cq:
getMap(0, R.drawable.cloud_sun);
break;
case R.id.btn_bj:
getMap(1, R.drawable.sun);
break;
case R.id.btn_cd:
getMap(2, R.drawable.clouds);
break;
}
}
private void getMap(int number, int iconNumber) {
Map<String, String> cityMap = list.get(number);
temp = cityMap.get("temp");
weather = cityMap.get("weather");
name = cityMap.get("name");
pm = cityMap.get("pm");
wind = cityMap.get("wind");
tvCity.setText(name);
tvWeather.setText(weather);
tvTemp.setText("" + temp);
tvWind.setText("风力 : " + wind);
tvPm.setText("pm: " + pm);
ivIcon.setImageResource(iconNumber);
}
}
学员评价