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 德克萨斯州的所有城市。