J'ai créé un bouton pour supprimer un élément ListView. Cela fonctionne bien au premier clic, mais si j’essaie de cliquer à nouveau, cela ne fonctionne plus.
Voici le code onClickListener:
OnClickListener clickBtnExcluir = new OnClickListener() {
@Override
public void onClick(View v) {
if (taskManager == null) {
taskManager = new AsyncTaskManager(context);
final Entity entity = (Entity) v.getTag();
Service service = new Service();
taskManager.executeTask(service, new String[] { cod1, cod2 }, new OnAsyncTaskCompleteListener<Return>() {
@Override
public void onTaskCompleteSuccess(Return result) {
if (result == Return.YES) {
refreshList();
}
}
@Override
public void onTaskFailed(Exception cause) {
}
});
}
}
};
Et voici le refreshList
méthode
public void refreshList() {
taskManager = new AsyncTaskManager(context);
ListService listService = new ListService();
taskManager.executeTask(listService , new String[] { cod1, "1", "0" },
new OnAsyncTaskCompleteListener<List<Entity>>() {
@Override
public void onTaskFailed(Exception cause) {
}
@Override
public void onTaskCompleteSuccess(List<Entity> result) {
listView.refreshDrawableState();
mainList = result;
notifyDataSetChanged();
}
});
}
Quelqu'un a une ideia?
Désolé par des fautes de grammaire.
Réponses:
3 pour la réponse № 1après le premier clic, le gestionnaire de tâches n’est plus nul, vous ne devez donc pas consulter le code d’exécution.
1 pour la réponse № 2
Selon votre code ci-dessus, onClick fonctionnera une fois {et c'est ce qui se passe}
Je suppose que vous voulez vérifier l’état de votre tâche asynchrone avant d’ajouter un autre asynchrone pour l’exécution:
Pour cela veuillez remplacer votre si avec cette ligne
if(taskManager.getStatus()==Status.FINISHED){ //check required status
}
n'oubliez pas de vérifier cela avant toute autre condition:
if(taskManager!=null){
}