2015-04-29 7 views
2

У меня есть два ящика с прядильщиками в приложении для Android. Первый ящик с прядильщиками представляет собой массив строк из разных состояний в Соединенных Штатах. Я хочу, чтобы второй счетчик заполнил города в выбранном состоянии.Java, получить города, основанные на выбранном состоянии

Как я могу получить список этих городов? Некоторые API, которые я могу использовать? Нужен ли мне предварительно определенный файл CSV, который содержит эти данные, чтобы я мог импортировать его в SQLite DB?

EDIT: Как следует из этого, вот как я продолжил, чтобы включить то, что я хотел сделать. Я толкнул 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()); 

Оттуда я петельные через массив и поместил каждый «имя» города в 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); 
+0

Что вы думаете о городе? Насколько небольшой муниципалитет должен быть, прежде чем вы не захотите его отобразить? Для больших городов вы хотите отобразить большую столичную область как единый город или вы хотите отдельно указать пригород/exurbs? – azurefrog

+0

Все, что было сказано, [карты google] (http://stackoverflow.com/questions/11858913/api-to-type-city-name-and-get-a-list-of-possible-cities) API будет вероятно, делать то, что вам нужно. – azurefrog

ответ

3

Я бы порекомендовал использовать API SBA.gov. Вот ссылка SBA API STATE AND CITY

В частности, это конечная точка может быть то, что вам нужно использовать http://api.sba.gov/geodata/city_links_for_state_of/tx.json

Идите вперед и нажмите на ссылку выше, вы сможете увидеть данные, возвращаемые. Он возвращает все города в TX.

+0

Человек, это ТОЧНО, что мне нужно! Спасибо вам большое за это! – dvsoukup

+0

Нет проблем, если у вас возникли проблемы с разбором JSON или вызовом, не стесняйтесь спрашивать о stackoverflow и пометить меня! –

+0

Ссылка на страницу SBA API изменилась и теперь находится http://api.sba.gov/doc/geodata.html Сам вызов api по-прежнему действителен. – Milam

Смежные вопросы