Alan Moment
  • Introduction
  • 智慧家庭
    • Fibaro 系統整合便宜的 IP Cam
  • Life
    • 用AWS Glacier做最後的冷資料備份
    • 如何在macOS修改影音檔日期
  • 3D Printer
    • Atom2.5EX 之血淚組裝
    • 列印經驗紀錄
      • SpoolHolder
    • 製圖經驗
      • Turntable
      • 重製Atom3散熱風扇
    • 線材經驗
      • PETG
        • 首測
  • Kubernetes
    • 使用Kops建立Kubernetes
    • 使用HelmV2
    • Kubernetes的技術問題排解技巧
  • PHP
    • 管理PHP Library的利器Composer
    • PHP安裝JSON
    • Phalcon首發
    • Gearman Job Worker for PHP
    • Laravel 首發 !!!
    • Data Encrypt & Decrypt
  • Python
    • Django + Python 開發環境建置
  • Android
    • Android zipcode library of maven
    • Android use foreign object of OrmLite
    • ProgressBar while loading ListView of Android
    • AsyncTask download image by the Android
    • Use Thread control Android UI
    • Android Universal Image Loader
  • Ruby on Rails
    • Install rmagick on the Windows of Ruby on Rails
    • Ruby on Rails deploy on Heroku
    • Ruby on Rails 小問題
  • React
    • Ditched AngularJS for React
  • Tessel
    • 很潮的 Tessel
    • Connect to Slack on Tessel
    • Baby Help on Tessel
  • Node.js
    • CentOS 安装 Node.js 0.8.5
  • OOAD
    • Injection Principle Design Pattern
  • Linux
    • SSH免密碼登入遠端電腦
    • Apache與Tomcat的結合
    • The bash auto build
  • Hadoop
    • CentOS 5.5 + Hadoop 0.20
    • CentOS 5.5 + Hbase 0.94.8
    • Hadoop + Hbase 叢集環境
    • Hadoop 溝通橋梁之 Thrift 0.7
    • 使用MapReduce之替代方案Hive
    • 使用Sqoop將MySQL資料匯入Hbase
  • Database
    • 吃足苦頭的Mssql
  • IDE
    • Netbeans console中文亂碼解決方法
    • 用NetBeans開發Ruby On Rails
  • Agile
    • 淺談我的Agile
  • 協作工具
    • 建置專屬自己的Github之Gitlab
    • Gitlab 4.1 upgrade to Gitlab 6.0超偷懶方法
    • Install Phabricator and run on the Gitlab
    • Phabricator 基本應用
    • Phabricator review code應用
    • Redmine之基本建置與Scrum應用
    • Omnibus Gitlab 7 基礎操作
    • Git Push Notify to Slack on Gitlab
    • phabricator-extensions-Sprint 無法抓到正確的 Story Points
  • 其他
    • 慶祝Octopress開張
    • 走在時尚的尖端! Ghost
    • 大搬家
    • 網頁教學初體驗
    • 網路攻擊很猖狂
Powered by GitBook
On this page
  • Eclipse 安裝 Maven
  • 安裝 Maven 工具
  • 建立 Maven project
  • 修改 pom.xml
  • 建立 zipcode.json
  • 建立 Zipcode Library

Was this helpful?

  1. Android

Android zipcode library of maven

PreviousAndroidNextAndroid use foreign object of OrmLite

Last updated 3 years ago

Was this helpful?

最近在做 Android app 時需要用到縣市、區域這些資料,做過網站的,都知道處理這個很煩啊!所以大多都會抽出來另外處理,封裝成 Component 好方便使用,但是在 Android 上要是把縣市、區域、郵遞區號放到 strings.xml 裡面,我想是會瘋掉的,維護、擴充也不容易。我就是建完才後悔的...

有個不錯的方法就是將資料用 json 的格式存成一隻檔案,然後自己寫抓取 json 的 util 放到 Android 的 libs,這樣要使用就很方便了。

Eclipse 安裝 Maven

使用 Eclipse plugin 安裝 Maven,在 Install new software 中點選 Add 輸入下列資料。

Name:Maven Plugin

Location:http://download.eclipse.org/technology/m2e/releases

若是發生不能安裝的錯誤還有另外一個

Name:Indigo

Location:http://download.eclipse.org/releases/indigo

在這個套件裡尋找 Maven 並且安裝

安裝 Maven 工具

變數名稱:MAVEN_HOME

變數值:C:\你的目錄\apache-maven-3.1.0

在 Path 變數尾端加上 MAVEN_HOME

%MAVEN_HOME%\bin;

建立 Maven project

為了方便自己管理 library 所以我建立了 maven project

Step 1.

Step 2.

Step 3.

修改 pom.xml

在<dependencies></dependencies>\>標籤中加入

<dependency><groupid>com.google.code.gson</groupid><artifactid>gson</artifactid><version>2.2.4</version></dependency>

在 project 中 Maven Dependencies 就會增加 gson library

建立 zipcode.json

依照下圖的格式建立 zipcode.json

將 zipcode.json 放置在 src/main/resources,並且修改 pom.xml,這樣在使用 maven install 就能夾帶檔案。

在<project></project>標籤中加入

<build><resources><resource><directory>src/main/resources</directory><includes><include>zipcode.json</include></includes></resource></resources></build>

建立 Zipcode Library

建立 InputStreamReader 讀取 json 資料,再用 gson 解析讀取完畢再關掉。 因為 gson 會主動幫字串加上雙引號,所以取資料出來必須要用 getAsString(),不能用 toString(),否則雙引號不會濾掉。

package com.zipcode_util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;

public class ZipcodeComponent {

  private static final String ZIPCODE_FILE = "zipcode.json";
  private static JsonObject jsonObject;

  /**
  * Json file io
  * @return JsonObject jsonObject
  */
  private JsonObject getJsonObject() {
    if (jsonObject == null) {
      BufferedReader br = new BufferedReader(
      new InputStreamReader(ZipcodeComponent.class
      .getClassLoader().getResourceAsStream(
      ZipcodeComponent.ZIPCODE_FILE)));
      jsonObject = new Gson().fromJson(br, JsonObject.class);

      try {
        br.close();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }

    return jsonObject;
  }

  /**
  * Get city name
  * @return List<String> citys
  */
  public String[] listCities(){
    JsonArray jsonArray = getJsonObject().getAsJsonArray("city");

    String[] cities = new String[jsonArray.size()];
    int i;
    for (i=0; i<jsonArray.size(); i++) {
      cities[i] = jsonArray.get(i).getAsJsonObject().get("name").getAsString();
    }
    return cities;
  }

  public String getCityName(Integer cityCode) {
    JsonArray jsonArray = getJsonObject().getAsJsonArray("city");
    return jsonArray.get(cityCode).getAsJsonObject().get("name").getAsString();
  }
}

Sep 3rd, 2013 6:50:00pm

下載 Maven 3.1.0 (Binary tar.gz),放哪裡都可以但是建議不要放在含有空白或特殊字元的資料夾,最後要在環境變數加上以下變數。

因為要解析 json 格式,所以在這邊需要引入的 dependency,為什麼不用呢,因為 Android 並沒有支援這個 library。

Maven 官網
google-gson
json-simple
android studio city list
android studio area list
create maven project step 1
create maven project step 2
create maven project step 3
gson dependencies
zipcode.json