Wie implementiert man Suchfunktionen mit SearchView, Retrofit und RxJava (RxBindings)?

8

Wenn der Nutzer in das Widget SearchView eintippt, sollte die App ein API-Aufruf ( im Hintergrundthread ), um Suchergebnisse vom Server abzurufen und sie ( im UI-Thread ) in RecyclerView anzuzeigen.

Ich verwende den folgenden Code in meinem Fragment:

%Vor%

Aber ich bekomme eine Ausnahme:

%Vor%

Wenn ich .subscribeOn(Schedulers.io()) lösche, wird der Aufruf der Such-API ausgelöst, wenn ein Fragment erstellt wird und keine Abfrage in SearchView eingegeben wird und ich eine Ausnahme erhalte

%Vor%

Wenn ich meine Suchanfrage eintrage, wird retrofitService.search(query) nicht mehr aufgerufen.

    
Max 18.09.2016, 14:43
quelle

1 Antwort

14

Denken Sie daran, dass Sie mehrere Operatoren observeOn und mehrere subscribeOn in Ihrer rx-Kette verwenden können.

Versuchen Sie Folgendes:

%Vor%

Dies wird grundsätzlich zu dieser Thread-Verwendung führen:

    
Bartek Lipinski 19.09.2016, 14:33
quelle