Я новичок в программировании и мало что знаю. Я использую Google Directions API, чтобы получить расстояние между двумя маркерами. По-видимому, это происходит в фоновом потоке. Я могу отобразить полученное расстояние на моем пользовательском интерфейсе с помощью запускаемого файла, но я не могу сохранить расстояние в глобальной переменной, чтобы использовать его в других вычислениях.
Вот как выглядит мой код:
public class MyClass {
private List<Distance> distances = new ArrayList<>();
private void calculateDistance (LatLng origin, LatLng destination) {
DirectionsApiRequest directions = new DirectionsApiRequest(mGeoApiContext);
directions.origin(origin);
directions.destination(destination).setCallback(new PendingResult.Callback<DirectionsResult>() {
@Override
public void onResult(DirectionsResult result) {
Distance distance = result.routes[0].legs[0].distance;
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
//adding the distance result from this method to the distances arraylist above
distances.add(distance);
}
});
}
}
}
}
К сожалению, мой массив расстояний остается нулевым вне этого метода. В том же пространстве, где я пытаюсь добавить результат расстояния для моего массива, я могу отобразить результат на виде или тосте. Кроме того, когда я добавляю результат в мой массив, если я проверяю размер списка в этом методе, он показывает, что результат был добавлен. Но если я получу доступ к своему архиву вне этого метода, он будет нулевым. Но мне нужно иметь возможность собрать список расстояний (NB. Этот метод вызывается из a для l oop) и добавить каждое собранное расстояние в мой массив расстояний и выполнить расчет вне метода, чтобы получить общее расстояние , Пожалуйста, помогите мне найти способ. И, пожалуйста, сделайте объяснения как можно более простыми или менее техническими, поскольку я новичок в этой области.