5

Sono uno sviluppatore iOS che inizia ad imparare Android. In Swift, creare un gestore di completamento è molto semplice, ma non riesco ancora a trovare un modo per farlo in Java.Creare un comando di completamento/richiamata personalizzato per restituire gli oggetti dopo aver completato una richiesta HTTP

Mi dispiace se questa domanda è troppo noob per le persone di StackOverflow.

Problema

sto creando una classe per gestire tutta la mia richiesta HTTP che viene fatto usando retrofit.

Faccio questa funzione è il mio RequestHelper.java

public static void checkEmailAvailability(String email) { 
    MyWebServiceAPI serviceAPI = retrofit.create(MyWebServiceAPI.class); 

    Call<APIResults> call = serviceAPI.checkEmailAvailability(getAuthenticationHeader(), RequestBody.create(MediaType.parse("text/plain"), email)); 

    call.enqueue(new Callback<APIResults>() { 
     @Override 
     public void onResponse(retrofit.Response<APIResults> response, Retrofit retrofit) { 
       //Parse Response Json 
       //Get some value and place it inside an object 
      //ANDI WOULD LIKE RETURN SOME BOOLEAN VALUE AND SOME OTHER STRING 
     } 

     @Override 
     public void onFailure(Throwable t) { 
       //I WOULD LIKE A BOOLEAN VALUE HERE    
     } 
    }); 
} 

Io lo chiamo come questo dal mio MainActivity

RequestHelper.checkEmailAvailability("[email protected]"); 

Ora la funzione è ancora vuoto, ma mi piacerebbe per poter restituire qualcosa dopo la sul metodo onResponse e onFailure.

Qualche idea per favore?

risposta

1

È necessario passare l'oggetto Callback come parametro allo checkEmailAvailability().

e implementare l'interfaccia quando si chiama il metodo dal MainActivity, e utilizza il parametro response nel metodo onXXX() come i dati restituiti per aggiornare UI.

+0

Mi piacerebbe avere un callback diverso (personalizzato). Perché analizzerò la risposta e restituirò il valore in un callback. – JayVDiyk

+0

@JayVDiyk Si può fare qualcosa come: public void checkEmailAvailability (String email, callback finale listener) e onResponse if (listener! = Null) { listener.success (retrofit, response); } onFailure if (listener! = Null) { listener.failure (t); – JoCuTo

+0

@JeCuRo Grazie per aver risposto. Diciamo. Voglio restituire un valore booleano nel callback. Come potrei fare per farlo? – JayVDiyk