Для получения состояния погоды удобно использовать API сервиса Openweathermap. Все города, которые есть в его базе доступны в формате JSON в архиве http://bulk.openweathermap.org/sample/city.list.min.json.gz
Файл большой, поэтому рекомендуется взять из него небольшую часть записей, каждая из которых имеет формат:
{
"id": 707860,
"name": "Hurzuf",
"country": "UA",
"coord": {
"lon": 34.283333,
"lat": 44.549999
}
}
Вам требуется создать приложение из двух экранов (activity), на первом в выпадающем списке выбираете город и вводите в текстовое поле предельное расстояние L от него. Допускается сделать выборку городов из файла строковых ресурсов, но лучше сделать это из JSON файла программно (см.описание, ArrayAdapter создаётся из списка строк).
Демонстрация заполнения списка
При нажатии на кнопку открывается второй экран, в котором отображается список городов, находящихся не дальше L км. от выбранного города.
Список городов берётся из файла JSON, для этого вам потребуется десериализовать список JSON-объектов и определить расстояние до каждого. Определить расстояние можно, используя встроенную функцию системы.
Location.distanceBetween(double startLatitude, double startLongitude, double endLatitude, double endLongitude, float[] results)
Расстояние между точками будет записано в переменную results.