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); } /**