Unendliches Scrollen in Apps: Was es ist, Prinzip und Implementierung

Autor: IT Sectr Veröffentlicht: 2026-08-03 Lesezeit: 9 Min.

Unendliches Scrollen (Infinite Scroll) ist eine Technik zum automatischen Laden von Inhalten, wenn der Benutzer das Ende der aktuellen Liste erreicht. Laut UX Design Collective, 2024 erhöht Infinite Scroll die Sitzungszeit in sozialen Netzwerken um 40–60% im Vergleich zur Paginierung. In der mobilen Entwicklung wird diese Technik durch eine Kombination von Scroll-Listenern und API-Anfragen mit Cursor-basierter Paginierung implementiert. Unendliches Scrollen ist zum De-facto-Standard für Inhaltsfeeds geworden, erfordert jedoch eine sorgfältige Implementierung, um Leistungs- und Navigationsprobleme zu vermeiden.

Wichtige Erkenntnisse

  • Unendliches Scrollen – automatisches Laden neuer Daten beim Erreichen des Listenendes ohne Benutzereingriff.
  • Paginierung – eine Alternative zu Infinite Scroll mit expliziter Seiteneinteilung und „Mehr laden“-Schaltflächen.
  • Cursor-basiert – die empfohlene Paginierungsmethode für Infinite Scroll, die einen Cursor anstelle einer Seitennummer verwendet.
  • Leistung – Elementvirtualisierung ist beim Scrollen durch Listen mit Tausenden von Einträgen obligatorisch.
  • Navigation – Unendliches Scrollen erschwert den Zugriff auf die Fußzeile und den Browserverlauf, was für E-Commerce kritisch ist.

Was ist unendliches Scrollen in mobilen Anwendungen?

Unendliches Scrollen (Infinite Scroll) ist ein Datenlademuster, bei dem neue Elemente automatisch am Ende der Liste hinzugefügt werden, während der Benutzer scrollt. Der Benutzer klickt nicht auf „Weiter“- oder „Mehr laden“-Schaltflächen – das System selbst bestimmt, wann der nächste Datenbatch angefordert werden soll, und fügt neue Einträge nahtlos in die bestehende Liste ein.

Infinite Scroll wurde durch soziale Netzwerke populär – Twitter, Instagram und TikTok verwenden es als ihren primären Inhaltsbereitstellungsmechanismus. Laut Nielsen Norman Group (2024) erhöht Infinite Scroll das Engagement bei Inhaltsanwendungen um 30–50%, da es die kognitive Belastung reduziert: Der Benutzer muss nicht entscheiden, zur nächsten Seite zu gehen. Bei Aufgaben, die eine präzise Navigation erfordern (Suche, Produktvergleich), kann Infinite Scroll jedoch die Effizienz verringern.

Technisch besteht Infinite Scroll aus drei Komponenten: einem Scroll-Listener (überwacht die Scroll-Position), einem Schwellenwert (Abstand zum Ende der Liste zum Auslösen des Ladens) und einem Paginierungsmechanismus (API-Anfrage und Dateneinfügung). Die richtige Konfiguration des Schwellenwerts ist entscheidend: Bei einem zu frühen Auslöser (1000 px vor dem Ende) erhält der Benutzer unnötige Anfragen; bei einem zu späten (50 px) bemerkt der Benutzer eine Ladepause.

Wie Infinite Scroll funktioniert: Architektur und Mechanik

Die Architektur von Infinite Scroll basiert auf einem ereignisgesteuerten Modell: Die Listenkomponente generiert ein Ereignis, wenn der Scroll-Schwellenwert erreicht wird, das ViewModel verarbeitet es und ruft das Repository auf, um den nächsten Datenbatch zu laden. Nach Erhalt der Antwort werden neue Elemente in die Liste eingefügt und die Benutzeroberfläche wird über den Adapter aktualisiert. Diese Kette muss asynchron sein und den UI-Thread nicht blockieren.

Der grundlegende Infinite-Scroll-Algorithmus umfasst vier Schritte. Initialisierung: Beim ersten Öffnen des Bildschirms wird der erste Datenbatch geladen (Seite 1 oder Cursor = null). Überwachung: Der Scroll-Listener prüft, ob der Benutzer den Schwellenwert erreicht hat – normalerweise 200–500 px vom Ende der Liste. Laden: Eine Anfrage wird mit Paginierungsparametern an die API gesendet, ein Ladeindikator (Spinner in der Fußzeile) wird auf der Benutzeroberfläche angezeigt. Einfügung: Neue Elemente werden zum Adapter hinzugefügt, die Scroll-Position wird angepasst, um Sprünge zu vermeiden.

Ein kritischer Aspekt ist das Debouncing von Anfragen. Wenn der Benutzer schnell bis zum Ende scrollt, kann der Auslöser mehrmals ausgelöst werden, bevor eine Antwort vom Server eintrifft. Ohne Debouncing führt dies zu doppelten Anfragen (Wettlaufsituation). Die Lösung besteht darin, neue Anfragen zu blockieren, bis die vorherige abgeschlossen ist. Ein isLoading-Flag im ViewModel verhindert mehrere Aufrufe: setzen Sie isLoading = true beim Senden einer Anfrage, zurücksetzen beim Erhalt einer Antwort oder eines Fehlers.

Auf mobilen Plattformen werden spezialisierte Mechanismen für Infinite Scroll verwendet. Auf iOS ist dies der prefetchDataSource in UICollectionView, der automatisch Daten für Bildschirm-zellen anfordert. Auf Android ist es die Paging 3 Library von Google, die eine fertige Architektur mit PagingSource, PagingData und PagingDataAdapter bereitstellt. Paging 3 unterstützt RemoteMediator zur Kombination von Netzwerk- und lokalen Daten und verwaltet den Ladestatus automatisch.

Cursor-basierte vs. Offset-basierte Paginierung

Die Offset-basierte Paginierung verwendet Seiten- und Größenparameter: page=2, size=20 gibt die Datensätze 21–40 zurück. Dieser Ansatz ist einfach zu implementieren, hat aber ein grundlegendes Problem – wenn zwischen den Anfragen Datensätze in der Datenbank hinzugefügt oder gelöscht werden, verschiebt sich der Offset (der Benutzer sieht Duplikate oder Lücken). Bei Feeds mit häufigen Änderungen (Nachrichten, Kommentare) liefert die Offset-basierte Paginierung falsche Ergebnisse.

Die Cursor-basierte Paginierung verwendet eine eindeutige Kennung des letzten Elements (Cursor): after=id_12345&limit=20. Der Server gibt 20 Datensätze nach dem angegebenen Cursor zurück. Dieser Ansatz garantiert Datenkonsistenz unabhängig von Einfügungen und Löschungen. Laut GraphQL Best Practices (2024) wird die Cursor-basierte Paginierung für alle Echtzeitanwendungen empfohlen, bei denen sich Daten dynamisch ändern.

Die Wahl zwischen den Ansätzen hängt vom Anwendungstyp ab. Für soziale Netzwerke (Instagram, TikTok) – nur Cursor-basiert, da der Feed ständig aktualisiert wird. Für Kataloge mit seltenen Änderungen (Produktkategorien von Online-Shops) ist die Offset-basierte Paginierung akzeptabel. Für hybride Szenarien empfiehlt Google Paging 3 RemoteMediator, der die Cursor-basierte Paginierung aus dem Netzwerk mit der Offset-basierten Paginierung aus der lokalen Room-Datenbank kombiniert.

Implementierung von Infinite Scroll auf iOS und Android

Auf Android ist der Standardansatz die Paging 3 Bibliothek von Jetpack. PagingSource definiert die Datenquelle (Netzwerk oder Datenbank), PagingData enthält Datenblöcke und PagingDataAdapter zeigt sie in RecyclerView an. Paging 3 verwaltet automatisch die Vorabrufentfernung, Wiederholungen und Aktualisierungen. Für die Netzwerkintegration wird RemoteMediator verwendet: Es lädt Daten aus der API, speichert sie in Room und benachrichtigt PagingSource über Aktualisierungen. Laut Google I/O 2024 verwenden über 60% der Android-Anwendungen mit Infinite Scroll Paging 3.

Beispiel einer grundlegenden Paging 3 Implementierung:

kotlin
class FeedPagingSource(
    private val api: FeedApi
) : PagingSource<String, Post>() {
    override suspend fun load(
        params: LoadParams<String>
    ): LoadResult<String, Post> {
        val response = api.getFeed(
            cursor = params.key,
            limit = params.loadSize
        )
        return LoadResult.Page(
            data = response.items,
            prevKey = null,
            nextKey = response.nextCursor
        )
    }
}

Auf iOS wird Infinite Scroll mit UICollectionView und prefetchDataSource implementiert. Das UICollectionViewDataSourcePrefetching-Protokoll enthält die Methode collectionView(_:prefetchItemsAt:), die aufgerufen wird, wenn das System das Scrollen zu bestimmten Indexpfaden vorhersieht. Im Gegensatz zu Android Paging 3 gibt es auf iOS keine integrierte Paginierungsbibliothek – Entwickler implementieren sie manuell oder verwenden Drittanbieterlösungen wie RxSwift + NSLayoutConstraint oder Combine-basierte Pipelines.

Beispiel für Vorabruf auf iOS:

swift
extension FeedViewController: UICollectionViewDataSourcePrefetching {
    func collectionView(
        _ collectionView: UICollectionView,
        prefetchItemsAt indexPaths: [IndexPath]
    ) {
        let lastRow = collectionView.numberOfItems(inSection: 0) - 1
        if indexPaths.contains(IndexPath(row: lastRow, section: 0)) {
            viewModel.loadNextPage()
        }
    }
}

SwiftUI bietet einen deklarativeren Ansatz über den onAppear-Modifikator. Der Entwickler platziert eine ProgressView am Ende der Liste und wenn sie erscheint, wird das Laden der nächsten Seite ausgelöst. Laut Apple WWDC 2024 vereinfachen die neuen AsyncSequence- und Swift Algorithms-APIs die Implementierung von Infinite Scroll, indem sie integrierte Chunking- und Debounce-Operatoren bereitstellen.

UX-Probleme des unendlichen Scrollens und ihre Lösungen

Das Haupt-UX-Problem von Infinite Scroll ist der Verlust der Fußzeile und Navigation. In Online-Shops möchten Benutzer oft zur Fußzeile gehen, um Kontakte oder Links zu finden. Unendliches Scrollen macht die Fußzeile unzugänglich – sie wandert mit dem Laden weiterer Inhalte immer weiter nach unten. Die Lösung besteht darin, einen schwebenden Aktionsbutton (FAB) für schnelles Scrollen nach oben hinzuzufügen oder die Fußzeile separat von der Liste zu fixieren.

Das zweite Problem ist das Fehlen eines Scroll-Verlaufs. Wenn ein Benutzer ein interessantes Produkt an Position 3 sieht, bis Position 50 scrollt und dann „Zurück“ drückt – kehrt er zum Anfang der Liste zurück und muss erneut bis Position 50 scrollen. Die Lösung besteht darin, die Scroll-Position im ViewModel zu speichern oder die Zustandswiederherstellung auf Activity/UIViewController-Ebene zu verwenden. iOS unterstützt NSUserActivity zur Positionswiederherstellung, Android unterstützt onSaveInstanceState.

Das dritte Problem ist die Leistung bei tausenden Elementen. Wenn keine Virtualisierung konfiguriert ist, beginnt die Anwendung nach 500–1000 geladenen Elementen aufgrund des erhöhten Speicherverbrauchs zu verlangsamen. Die Lösung besteht darin, Virtualisierung mit RecyclerView oder UICollectionView zu verwenden, die nur sichtbare + vorabgerufene Zellen im Speicher behalten. Die regelmäßige Bereinigung alter Daten (Verwerfen von Seiten jenseits von N Seiten) reduziert ebenfalls die Last.

Häufig gestellte Fragen

Was ist unendliches Scrollen in mobilen Anwendungen?

Unendliches Scrollen (Infinite Scroll) ist eine Technik zum automatischen Laden von Inhalten, wenn der Benutzer das Ende der Liste erreicht. Neue Daten werden nahtlos hinzugefügt, ohne dass Paginierungsschaltflächen angeklickt werden müssen. Es wird in sozialen Netzwerken, Nachrichtenfeeds und Katalogen mit dynamischen Inhalten verwendet.

Wie unterscheidet sich Infinite Scroll von der normalen Paginierung?

Paginierung erfordert manuelle Navigation zwischen den Seiten (Schaltflächen „1, 2, 3“), während Infinite Scroll Daten automatisch lädt. Paginierung ist vorhersagbar und bewahrt den Navigationskontext; Infinite Scroll erhöht das Engagement, erschwert aber den Zugriff auf die Fußzeile und den Scroll-Verlauf. Die Wahl hängt vom Inhaltstyp und den Anwendungszielen ab.

Wie implementiert man unendliches Scrollen auf Android?

Auf Android ist die empfohlene Bibliothek Paging 3 von Jetpack. Sie bietet PagingSource für die Datenquelle, PagingData für Blöcke und PagingDataAdapter für RecyclerView. Paging 3 verwaltet automatisch Vorabruf, Ladestatus und Wiederholungen. Für hybride Offline/Online-Szenarien verwenden Sie RemoteMediator.

Wie verhindert man doppelte Anfragen bei Infinite Scroll?

Doppelte Anfragen werden durch ein isLoading-Debounce-Flag verhindert. Wenn die erste Anfrage gesendet wird, wird das Flag auf true gesetzt und blockiert neue Aufrufe, bis eine Antwort eingeht. Nach einer erfolgreichen Antwort wird das Flag zurückgesetzt. Zusätzlich können Sie Coroutinen (Kotlin) oder Cancellable (Swift) beim Rückwärtsscrollen abbrechen.

Wann sollte man Infinite Scroll NICHT verwenden?

Infinite Scroll ist nicht geeignet für E-Commerce mit Produktsuche und -vergleich, für Anwendungen mit wichtiger Fußzeile (Kontakte, Links), für Suchergebnisseiten (der Benutzer muss zu einem bestimmten Element zurückkehren) und für Statistik-/Berichtsseiten, bei denen die Gesamtzahl wichtig ist. Verwenden Sie in diesen Fällen die klassische Paginierung oder eine „Mehr laden“-Schaltfläche.

Zusammenfassung

  • Unendliches Scrollen ist eine Technik zum automatischen Laden von Inhalten, die zum Standard für Social-Media-Feeds und Inhaltsanwendungen geworden ist.
  • Die Architektur umfasst einen Scroll-Listener, einen Schwellenwertauslöser und einen Paginierungsmechanismus, die asynchron über ViewModel und Repository arbeiten.
  • Cursor-basierte Paginierung ist für dynamische Daten der Offset-basierten vorzuziehen, da sie Konsistenz bei Einfügungen und Löschungen gewährleistet.
  • Auf Android ist die Standardimplementierung Paging 3 mit PagingSource und RemoteMediator; auf iOS UICollectionView mit prefetchDataSource oder SwiftUI onAppear.
  • Die wichtigsten UX-Probleme sind der Verlust der Fußzeile, fehlender Scroll-Verlauf und Leistungseinbußen bei tausenden Elementen ohne Virtualisierung.
  • Infinite Scroll ist nicht geeignet für E-Commerce, Suchseiten und Szenarien, in denen eine präzise Navigation durch Listenelemente entscheidend ist.
  • Optimierung erfordert Anfrage-Debouncing, Elementvirtualisierung, Erhaltung der Scroll-Position und regelmäßige Bereinigung alter Daten.

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch