J'écris une application Blackberry. J'ai un champ de liste personnalisé où je peux sélectionner un élément dans la liste qui pousse l'écran d'édition sur la pile. J'édite l'article et le sauvegarde, et quand j'éteins cet écran pour que je revienne sur l'écran de ma liste, je veux voir la mise à jour que je viens de faire apparaître dans la liste. Je l'ai fait sur d'autres écrans qui avaient juste LabelFields et ça a bien fonctionné. Cependant, avec l'écran de liste, appeler invalidate() semble ne rien faire. Je sais que la valeur a été sauvegardée correctement via les lignes d'impression, et je vois que la méthode paint() dans le champ liste est appelée. Mais la seule façon de mettre à jour le champ liste est de le supprimer de l'écran et de le rajouter. Cela semble faux. Qu'est-ce que je fais mal?Blackberry invalider le champ ne provoque pas de repeindre
public class ListTasksScreen extends MainScreen{
private TaskList tasks;
private CustomListField taskListField;
public ListTasksScreen (TaskList tasks){
super();
this.tasks = tasks;
Vector incompleteTasks = tasks.getIncompleteTasks();
taskListField = new CustomListField(incompleteTasks, tasks);
add(taskListField);
}
public void updateTaskList(TaskList t)
{
Vector incompleteTasks = t.getIncompleteTasks();
taskListField= new TaskListField(incompletetTasks, t);
//I just want to call taskListField.invalidate() here.
//the only thing that seems to work is deleting taskListField
//and re-adding
this.delete(taskListField);
add(taskListField);
}
}
Oui, c'était une faute de frappe, désolé. Cela prend tout son sens à propos de la référence au champ liste. Je vous remercie! Je vais essayer maintenant. – Michaela