Java,根据所选州获取城市
Java, get cities based on a chosen state
我在 Android 应用程序中有两个微调框。第一个微调框是美国不同州的字符串数组。我希望第二个微调器填充所选州内的城市。
我怎样才能得到这些城市的列表?有的API我可以用吗?我是否需要包含此数据的预定义 CSV 文件以便将其导入 SQLite 数据库?
编辑:
作为对此的后续,这就是我如何继续整合我想做的事情。我将 JSON 从端点推入字符串,然后最终推入 JSONArray:
inStream = httpConnection.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inStream));
StringBuilder sb = new StringBuilder();
String line;
//sb.append("{\"cities\":");
while ((line = br.readLine()) != null) {
sb.append(line).append("\n");
}
br.close();
jsonArray = new JSONArray(sb.toString());
//sb.append("}");
jsonArray = new JSONArray(sb.toString());
从那里开始,我遍历数组并将城市的每个 "name" 放入 ArrayList:
ArrayList<String> cities = new ArrayList<>();
try {
int rootSize = jsonArray.length();
for (int i = 0; i < rootSize; i++){
JSONObject inner = jsonArray.getJSONObject(i);
//String firstChildren = inner.getString("name");
cities.add(inner.getString("name"));
//double secondChildren = inner.getDouble(1);
}
} catch (JSONException e) {
e.printStackTrace();
}
Collections.sort(cities);
return cities;
有了 ArrayList,我使用了列表适配器并将其绑定到我的城市微调器。完成!:
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, cities);
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // The drop down view
spnrCity.setAdapter(spinnerArrayAdapter);
我建议使用 SBA.gov API。这里是linkSBA API STATE AND CITY
具体来说这个端点可能是你需要使用的http://api.sba.gov/geodata/city_links_for_state_of/tx.json
继续点击上面的link,您将能够看到返回的数据。它 returns 德克萨斯州的所有城市。
我在 Android 应用程序中有两个微调框。第一个微调框是美国不同州的字符串数组。我希望第二个微调器填充所选州内的城市。
我怎样才能得到这些城市的列表?有的API我可以用吗?我是否需要包含此数据的预定义 CSV 文件以便将其导入 SQLite 数据库?
编辑: 作为对此的后续,这就是我如何继续整合我想做的事情。我将 JSON 从端点推入字符串,然后最终推入 JSONArray:
inStream = httpConnection.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inStream));
StringBuilder sb = new StringBuilder();
String line;
//sb.append("{\"cities\":");
while ((line = br.readLine()) != null) {
sb.append(line).append("\n");
}
br.close();
jsonArray = new JSONArray(sb.toString());
//sb.append("}");
jsonArray = new JSONArray(sb.toString());
从那里开始,我遍历数组并将城市的每个 "name" 放入 ArrayList:
ArrayList<String> cities = new ArrayList<>();
try {
int rootSize = jsonArray.length();
for (int i = 0; i < rootSize; i++){
JSONObject inner = jsonArray.getJSONObject(i);
//String firstChildren = inner.getString("name");
cities.add(inner.getString("name"));
//double secondChildren = inner.getDouble(1);
}
} catch (JSONException e) {
e.printStackTrace();
}
Collections.sort(cities);
return cities;
有了 ArrayList,我使用了列表适配器并将其绑定到我的城市微调器。完成!:
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, cities);
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // The drop down view
spnrCity.setAdapter(spinnerArrayAdapter);
我建议使用 SBA.gov API。这里是linkSBA API STATE AND CITY
具体来说这个端点可能是你需要使用的http://api.sba.gov/geodata/city_links_for_state_of/tx.json
继续点击上面的link,您将能够看到返回的数据。它 returns 德克萨斯州的所有城市。