小格格的第一篇博客


第一篇博客——安卓酷欧天气

第一部分——创建数据库和表

首先在com.coolweather.android包下创建 db geon service util包用于存放代码。
编辑build.gradle文件,在dependencise闭包中添加如下代码来声明依赖库:

  implementation 'org.litepal.android:core:1.4.1'
  implementation 'com.squareup.okhttp3:okhttp:3.4.1'
  implementation 'com.google.code.gson:gson:2.7'
  implementation 'com.github.bumptech.glide:glide:3.7.0'

在db包中建立Province类用于存放省级信息

package com.weather.weather.db;

import org.litepal.crud.DataSupport;

public class Province extends DataSupport {
    private int id;
    private String provinceName;
    private int provinceCode;
    public int getId() {return id;}
    public void setId(int id) { this.id = id; }
    public String getProvinceName(){return provinceName; }
    public void setProvinceName(String provinceName){
        this.provinceName = provinceName;
    }
    public int getProvinceCode() { return provinceCode; }
    public void setProvinceCode(int provinceCode) {
        this.provinceCode = provinceCode;
    }
}

继续创建City包用于存放市级信息

package com.weather.weather.db;
import org.litepal.crud.DataSupport;
public class Province extends DataSupport {
    private int id;
    private String provinceName;
    private int provinceCode;
    public int getId() {return id;}
    public void setId(int id) { this.id = id; }
    public String getProvinceName(){return provinceName; }
    public void setProvinceName(String provinceName){
        this.provinceName = provinceName;
    }
    public int getProvinceCode() { return provinceCode; }
    public void setProvinceCode(int provinceCode) {
        this.provinceCode = provinceCode;
    }
}

继续创建County类用于存放县级信息

package com.weather.weather.db;
import org.litepal.crud.DataSupport;

public class County extends DataSupport{
    private int id;
    private String countyName;
    private String weatherId;
    private int cityId;
    public int getId(){
        return id;
    }
    public void setId(int id){
        this.id=id;
    }
    public String getCountyName(){
        return countyName;
    }
    public void setCountyName(String countyName){
        this.countyName =countyName;
    }
    public String getWeatherId(){
        return weatherId;
    }
    public void setWeatherId(String weatherId) {
        this.weatherId = weatherId;
    }
    public int getCityId(){
        return cityId;
    }
    public void setCityId(int cityId){
        this.cityId=cityId;
    }
}

然后在litepal文件中指定数据库名称和版本。代码如下。

<litepal>
    <dbname value="cool_weather"/>
    <version value="1"/>
    <list>
        <mapping class="com.weather.weather.db.Province"/>
        <mapping class="com.weather.weather.db.City"/>
        <mapping class="com.weather.weather.db.County"/>
    </list>
</litepal>

接下来配置LitePalApplication。修改AndroidMainifest中的代码如下:

    <application
        android:name="org.litepal.LitePalApplication"
        android:allowBackup="true"

至此,第一阶段完成,开始进入第二阶段的开发。

第二阶段——遍历全国省市县数据

在util包下增加HttpUtil类,输入用于和服务器交互的代码,如下:

public class HttpUtil {
    public static void sendOkHttpRequest(String address,okhttp3.Callback callback){
        OkHttpClient client =new OkHttpClient();
        Request request=new Request.Builder().url(address).build();
        client.newCall(request).enqueue(callback);
    }

接下来我们需要提供一个工具类来解析和处理服务器返回的JSON格式的数据,在util包下新建一个Utility类,代码如下;

package com.weather.weather.util;

import android.text.TextUtils;

import com.google.gson.Gson;
import com.weather.weather.db.City;
import com.weather.weather.db.County;
import com.weather.weather.db.Province;
import com.weather.weather.gson.Weather;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class Utility {
/*解析和处理服务器返回的省级数据*/
    public static boolean handleProvinceResponse(String response){
        if (!TextUtils.isEmpty(response)) {
            try {
                JSONArray allProvinces = new JSONArray(response);
                for (int i = 0; i < allProvinces.length(); i++) {
                    JSONObject provinceObject = allProvinces.getJSONObject(i);
                    Province province = new Province();
                    province.setProvinceName(provinceObject.getString("name"));
                    province.setProvinceCode(provinceObject.getInt("id"));
                    province.save();
                }
                return true;
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
        return false;
    }
/*解析和处理服务器返回的市级数据*/
    public static boolean handleCityResponse(String response, int provinceId) {
        if (!TextUtils.isEmpty(response)) {
            try {
                JSONArray allCities = new JSONArray(response);
                for (int i = 0; i < allCities.length(); i++) {
                    JSONObject cityObject = allCities.getJSONObject(i);
                    City city = new City();
                    city.setCityName(cityObject.getString("name"));
                    city.setCityCode(cityObject.getInt("id"));
        
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值