Dans mon programme, je suis récupérer des valeurs d'une URL de JSON puis de les afficher dans un listView. Maintenant, je veux supprimer certains éléments de la liste, donc quand je clique sur un élément, l'API de suppression appelle dans le doInBackground() de AsyncTask .. Maintenant, après avoir terminé la AsyncTask je veux recharger la liste afin que les changements peuvent être vus.Comment rafraîchir l'activité de AsyncTask dans Android
Comment puis-je relaod la liste pour voir les changements ..
Mon AsyncTask est une catégorie distincte.
ceci est mon code AsyncTask:
protected String doInBackground(String... DATA) {
// TODO Auto-generated method stub
rqst_type = DATA[0];
if(rqst_type.equals("del_top5"))
{
String url = DATA[1];
JsonParser jParser = new JsonParser();
JSONObject json = jParser.getJSONfromUrl(url+memberId);
Log.v(TAG_LOG, "del url: "+url+memberId);
try
{
message = json.getString(TAG_DELSCS);
Log.v(TAG_LOG, "msg "+TAG_DELSCS);
}
catch(JSONException e)
{
Log.v(TAG_LOG, String.valueOf(e));
}
}
return null;
}
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
if(rqst_type.equals("del_top5"))
{
if(message.equals("true"))
{
AlertDialog alertDialog = new AlertDialog.Builder(context).create();
alertDialog.setTitle("Course Deleted");
alertDialog.setMessage("Course Sucessfully Deleted");
alertDialog.setIcon(R.drawable.tick);
alertDialog.setButton("OK", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
}
});
alertDialog.show();
}
else if(message.equals("false"))
{
AlertDialog alertDialog = new AlertDialog.Builder(context).create();
alertDialog.setTitle("Error");
alertDialog.setMessage("Course Not Deleted");
alertDialog.setIcon(R.drawable.alert);
alertDialog.setButton("OK", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
}
});
alertDialog.show();
}
else
{
AlertDialog alertDialog = new AlertDialog.Builder(context).create();
alertDialog.setTitle("Error");
alertDialog.setMessage("Unknown Erroe Occured");
alertDialog.setIcon(R.drawable.alert);
alertDialog.setButton("OK", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
}
});
alertDialog.show();
}
}
progress.dismiss();
}
Le nom de mon activité est MyTop5.class
que je veux recharger lorsque je clique sur le bouton OK de la AlertDialog ..
c'est le coading pour mon ListAdapter:
ListAdapter adapter = new SimpleAdapter(this, LoadingScreen.top5List, R.layout.top5_list,
new String[] { TAG_GLFCRSNAME, TAG_GLFCRSID, TAG_CRTDATE, TAG_FCLTY, TAG_HOLES },
new int[] { R.id.top_golfname, R.id.top_courseid, R.id.top_createdate, R.id.top_fclty, R.id.top_holes });
setListAdapter(adapter);
Merci à l'avance ..
J'ai également passé l'activité en tant que paramètre avec le contexte de la tâche asynchrone. Mais je suis maintenant capable de trouver le notifyDataSetChanged(). Le nom de ma classe AsyncTask est LoadingScreen, donc le code que j'ai écrit était LoadingScreen.this.activity.notifyAll() et j'ai reçu un message de fermeture forcée. Je reçois seulement notify() ou notifyAll(). comment puis-je obtenir notifyDataSetChanged(); –
notifyDataSetChanged() est une méthode sur l'adaptateur, pas sur l'activité. Au lieu de passer l'activité peut-être vous pouvez passer l'adaptateur? L'adaptateur a accès à la liste, alors vous pouvez changer cela et quand vous avez fini, vous pouvez adapter.notifyDataSetChanged(). Soyez prudent afin de ne pas modifier l'emplacement de votre liste, cela supprimera sa connexion de l'adaptateur. – span
Pouvez-vous me fournir un exemple de code ... car je ne suis toujours pas capable d'appeler notifyDataSetChanged() dans la même classe où j'ai créé l'adaptateur pour ma ListView. J'obtiens la même notification() et notifyAll() quand je tyr le code suivant: adapter.notify ...(). –