Création d'une ProgressBar loader
Bonjour,
j'ai une tache Asynchrone qui prend un context (merci de ne pas me souligner la perte de performance du fait que la classe ne soit pas nested ^^):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| public class DownloadDataPromotions extends AsyncTask<Void, Integer, ArrayList<HashMap<String, String>>>
{
Context context;
public DownloadDataPromotions(Context context)
{
this.context = context;
}
@Override
protected void onPreExecute()
{
super.onPreExecute();
}
@Override
protected ArrayList<HashMap<String, String>> doInBackground(Void... params)
{
ArrayList<HashMap<String, String>> promoList = new ArrayList<HashMap<String, String>>();
promoList = DownloadingDataFromWebService();
...
return promoList;
}
@Override
protected void onProgressUpdate(Integer... values)
{
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(ArrayList<HashMap<String, String>> promoList)
{
super.onPostExecute(promoList);
...
}
} |
Puis j'appel ma tache ascynchrone dans le but d'afficher toutes mes donnees recues par mon WebService dans une ListActivity qui contient un bouton Refresh qui rappel cette tache asynchrone.
Mais le soucis auquel je me pose est d'inserer a cette Liste (en plus de mon bouton refresh et de mes items) une petite progressBar undeterminate qui s'affichera juste en dessous de mon bouton refresh lorsque que ma tache asynchrone sera appelee.
J'ai pense donc a l'integration directement dans la tache asynchrone dans le onPreExecute la lancer et dans le postExecute la dismiss.. mais je ne vois vraiment pas comment le faire..
Donc poru quel choix opte ? Sachant que j'ai un Drawable qui peut me l'afficher de maniere custom..
J'ai essaye d'ajouter ceci a l'evenement OnClick du bouton refresh dans ma ListActivity:
Code:
1 2 3 4
| ProgressBar pb = new ProgressBar(TabPromotionsJSONParsingActivity.this);
LinearLayout ll = (LinearLayout) findViewById(R.id.linearlayoutProgressBar);
ll.addView(pb);
pb.setVisibility(View.VISIBLE); |
Cela affiche bien la progressBar loader mais biensure comme je ne fais pas de
View.Gone celle ci ne s'arrete pas..
j'ai essayer de la placer dans un thread mais cela me retourne une erreur car on ne peut rien ajouter a la vue principale a partir d'un autre thread..
Quelqu'un?
J'aimerais trouve le moyen de gerer l'affichage dans mon AsyncTask ou sinon trouver un moyen d'afficher pendant un certain moment ma progressBar dans ma ListActivity.