Я пишу приложение Blackberry. У меня есть собственное поле списка, в котором я могу выбрать элемент в списке, который подталкивает экран редактирования к стеку. Я редактирую элемент и сохраняю его, и когда я выхожу из этого экрана, поэтому снова вернусь на экран списка, я хочу просмотреть обновленное мной обновление, отраженное в списке. Я сделал это на других экранах, у которых был только LabelFields, и он работал нормально. Однако со списком экрана вызов invalidate(), кажется, ничего не делает. Я знаю, что значение правильно сохранялось с помощью строк печати, и я вижу, что метод paint() в поле списка вызывает вызов. Но единственным способом получить поле списка для обновления является удаление его с экрана и его повторное добавление. Это кажется неправильным. Что я делаю не так?Blackberry invalidate поле не вызывает перекраску
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