From 49fd84b3cb3dd6ad968e2f737335faf96ad1f6c9 Mon Sep 17 00:00:00 2001 From: Kanahia Date: Sat, 18 May 2024 11:14:48 +0530 Subject: [PATCH] Improved sorting --- .../java/fr/free/nrw/commons/nearby/Place.java | 15 ++++++--------- .../nearby/fragments/NearbyParentFragment.java | 2 +- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/Place.java b/app/src/main/java/fr/free/nrw/commons/nearby/Place.java index a1db576c9..2ad9a5892 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/Place.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/Place.java @@ -6,6 +6,7 @@ import android.os.Parcelable; import androidx.annotation.Nullable; import fr.free.nrw.commons.location.LatLng; import fr.free.nrw.commons.nearby.model.NearbyResultItem; +import fr.free.nrw.commons.utils.LocationUtils; import fr.free.nrw.commons.utils.PlaceUtils; import org.apache.commons.lang3.StringUtils; import timber.log.Timber; @@ -145,18 +146,14 @@ public class Place implements Parcelable { } /** - * Gets the name of the place + * Gets the distance between place and curLatLng * + * @param curLatLng * @return name */ - public Double getDistanceInDouble() { - double distanceValue = 0.0; - if (distance.endsWith("km")) { - distanceValue = Double.parseDouble(distance.replace("km", "")); - } else if (distance.endsWith("m")) { - distanceValue = Double.parseDouble(distance.replace("m", "")) / 1000; - } - return distanceValue; + public Double getDistanceInDouble(LatLng curLatLng) { + return LocationUtils.calculateDistance(curLatLng.getLatitude(), curLatLng.getLongitude(), + getLocation().getLatitude(), getLocation().getLongitude()); } /** diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.java b/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.java index 4bad5b614..8d31a57e4 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.java @@ -1400,7 +1400,7 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment int batchSize = 3; final List updatedPlaceList = new ArrayList<>(placeList); if (VERSION.SDK_INT >= VERSION_CODES.N) { - Collections.sort(updatedPlaceList, Comparator.comparingDouble(Place::getDistanceInDouble)); + Collections.sort(places, Comparator.comparingDouble(place -> place.getDistanceInDouble(curLatLng))); } processBatchesSequentially(places, batchSize, updatedPlaceList, curLatLng, 0); }