From 6833ea72826f54da26b8638307a563918e61b370 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Wed, 26 Nov 2025 22:46:39 +0100 Subject: [PATCH] Use MarkerIterator for TrackDataHub. --- .../opentracks/data/ContentProviderUtils.java | 7 +++---- .../opentracks/data/TrackDataHub.java | 17 +++++------------ 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/src/main/java/de/dennisguse/opentracks/data/ContentProviderUtils.java b/src/main/java/de/dennisguse/opentracks/data/ContentProviderUtils.java index 8095245cd..60d26a4a0 100644 --- a/src/main/java/de/dennisguse/opentracks/data/ContentProviderUtils.java +++ b/src/main/java/de/dennisguse/opentracks/data/ContentProviderUtils.java @@ -434,9 +434,8 @@ public class ContentProviderUtils { return new MarkerIterator(this, trackId, -1); } - //TODO Use MarkerIterator instead - Cursor getMarkerCursor(@NonNull Track.Id trackId) { - return getMarkerCursor(trackId, -1); + public AutoCloseableIterator getMarkerIterator(@NonNull Track.Id trackId, int maxCount) { + return new MarkerIterator(this, trackId, maxCount); } /** @@ -445,7 +444,7 @@ public class ContentProviderUtils { * @param trackId the track id * @param maxCount the maximum number of markers to return. -1 for no limit */ - public Cursor getMarkerCursor(@NonNull Track.Id trackId, int maxCount) { + Cursor getMarkerCursor(@NonNull Track.Id trackId, int maxCount) { String selection; String[] selectionArgs; diff --git a/src/main/java/de/dennisguse/opentracks/data/TrackDataHub.java b/src/main/java/de/dennisguse/opentracks/data/TrackDataHub.java index a2a7a15dd..01d618dd2 100644 --- a/src/main/java/de/dennisguse/opentracks/data/TrackDataHub.java +++ b/src/main/java/de/dennisguse/opentracks/data/TrackDataHub.java @@ -276,20 +276,13 @@ public class TrackDataHub { trackDataListener.clearMarkers(); } - try (Cursor cursor = contentProviderUtils.getMarkerCursor(selectedTrackId, MAX_DISPLAYED_MARKERS)) { - if (cursor != null && cursor.moveToFirst()) { - do { - Marker marker = contentProviderUtils.createMarker(cursor); - for (Listener trackDataListener : trackDataListeners) { - trackDataListener.onNewMarker(marker); - } - } while (cursor.moveToNext()); - } + try (AutoCloseableIterator markerIterator = contentProviderUtils.getMarkerIterator(selectedTrackId, MAX_DISPLAYED_MARKERS)) { + markerIterator.forEachRemaining(current -> + trackDataListeners.forEach(listener -> listener.onNewMarker(current)) + ); } - for (Listener trackDataListener : trackDataListeners) { - trackDataListener.onNewMarkersDone(); - } + trackDataListeners.forEach(Listener::onNewMarkersDone); } /**