我正在寫一個黑莓應用程序。我有一個自定義列表字段,我可以在列表中選擇一個項目,將編輯屏幕推入堆棧。我編輯該項目並保存,當我彈出該屏幕以便返回到列表屏幕上時,我想查看我剛剛在列表中顯示的更新。我已經在其他只有LabelField的屏幕上完成了這項工作,並且工作正常。但是,在列表屏幕中,調用invalidate()似乎什麼也不做。我知道值已經通過打印線正確保存了,並且我看到listfield中的paint()方法正在被調用。但是,我可以讓列表字段更新的唯一方法是將其從屏幕上刪除並重新添加。這似乎是錯誤的。我究竟做錯了什麼?黑莓無效字段不會導致重繪
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);
}
}
是的,那是一個錯字,對不起。這對於列表字段的引用完全有意義。謝謝!現在就試試看。 – Michaela 2010-04-20 14:24:08