0

J'ai une vue de recyclage qui affiche les données demandées par volley. J'utilise le handler(). PostDelayed pour montrer la barre de progression pendant 4 secondes mais ce n'est pas cohérent avec mon recyclerview parce que parfois il faut plus de 4 secondes pour obtenir des données d'api et les afficher dans le recyclerview et parfois ça prend moins tham ça. Mais je veux que la barre de progression s'exécute tant que le recyclerview n'est pas encore visible.Comment afficher la barre de progression pendant le chargement de recyclerview et la masquer lorsque vous avez terminé?

C'est mon code

new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      stopProgressbar(); 
     } 
    },4000); 

    new Handler().post(new Runnable() { 
     @Override 
     public void run() { 
      loadData(); 
     } 
    }); 

Répondre

1

Appelez la méthode stopProgressbar() de onResponse() et onErrorResponse().

Voici un exemple:

public void loadData() 
{ 
    JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.GET, 
      url, null, 
      new Response.Listener<JSONObject>() { 

       @Override 
       public void onResponse(JSONObject response) { 
        Log.d(TAG, response.toString()); 

        // Parse JSON data and add to list 
        ........... 
        ........................... 

        // Hide progressbar 
        stopProgressbar(); 
       } 
      }, new Response.ErrorListener() { 

       @Override 
       public void onErrorResponse(VolleyError error) { 
        VolleyLog.d(TAG, "Error: " + error.getMessage()); 

        // Hide progressbar 
        stopProgressbar();      
       } 
      }); 

      .................. 
      .......................... 
} 
+0

cela a fonctionné .. Merci beaucoup –

+0

Content de savoir que :) codage heureux – FAT

1

Pas besoin de gestionnaire séparé pour gérer ProgressBar.

Vous pouvez arrêter une fois que vous obtenez une réponse de la volly. Vous devriez appeler la méthode stopProgressbar(); à partir de là.

Si et seulement Si vous rencontrez un problème de thread principal, écrivez-le sous la méthode runOnUIThread().

+0

si j'utilise 'runOnUIThread' ou 'Handler() après.' Le spectacle ne marche pas ProgressBar. Il montre seulement quand j'utilise 'Handler(). PostDelayed' –