2017-06-16 1 views
1

ce code ci-dessous est une boucle sur un service Web comment attendre jusqu'à ce que booléen est vrai avant chaque boucleEn attendant d'obtenir booléen est vrai

vérifier le commentaire dans le code

for (i=0;i<contactsString.length-1;i++){ 
     Phone phone=new Phone(); 
     phone.phone=contactsString[i]; 
     check=false; 
     WebService.getInstance().getApi().checkNumber(phone).enqueue(new Callback<MainResponse>() { 

      @Override 
      public void onResponse(Call<MainResponse> call, Response<MainResponse> response) { 

       availableUsers++; 
       check=true; 
      } 

      @Override 
      public void onFailure(Call<MainResponse> call, Throwable t) { 

      } 
     }); 
     //--- here how to wait untill check is true then continue the loop 

    } 
+0

où vous affectez check = true dans le code. –

+0

à l'intérieur onResponse – RealDEV

+2

à l'endroit de la boucle utiliser la fonction récursive ..... qui fonctionnera bien dans cette condition – santoXme

Répondre

3

comment attendre jusqu'à ce chèque est vrai continuer alors la boucle

utiliser une fonction récursive

supprime et initialise availableUsers=0 en tant que champ. Pour démarrer la boucle, appelez checkNumber()

private int availableUsers=0; 

    public void checkNumber() { 
     this.checkNumber(0); 
    } 
    private void checkNumber(final int i){ 
     if(contactsString==null || i>=contactsString.length){ 
      return; 
     } 
     Phone phone=new Phone(); 
     phone.phone=contactsString[i]; 
     WebService.getInstance().getApi().checkNumber(phone).enqueue(new Callback<MainResponse>() { 

      @Override 
      public void onResponse(Call<MainResponse> call, Response<MainResponse> response) { 


       availableUsers++;      
       checkNumber(i+1); 

      } 

      @Override 
      public void onFailure(Call<MainResponse> call, Throwable t) { 
       checkNumber(i+1); 

      } 
     }); 
} 
+0

Je reçois tableau hors limite quand je l'ai mis à contactsString.length – RealDEV

+0

besoin d'un peu plus d'aide les gars: D Je peux envoyer et recevoir une valeur de chaîne avec retrofit comment envoyer un arr ay et recevoir un autre tableau et qu'est-ce que c'est json forme la forme envoyée et reçue un exemple simple m'aiderait à comprendre si possible – RealDEV

+0

@Darish si vous définissez la méthode privée, vous devez créer un public comme 'public void checkNumber() { this.checkNumber (0); 'cacher la solution récursive. Cela empêche quelqu'un d'appeler 'checkNumber (100);' Mais oui, c'est correct. Comprends-tu pourquoi maintenant? Que le plus important – AxelH