嗨,我是 gwt 编程的初学者,我已经解决了这个 AsyncCallback 的问题,我的代码是这样的:
但是当我调用这个方法时,它会在回调可以组成列表之前返回列表。
`public static ArrayList<Appointment> build(Usuario user,AppointmentStyle[] styles) {
final ArrayList<Appointment> list = new ArrayList<Appointment>();
callback = new AsyncCallback<List<Compromisso>>() {
@Override
public void onFailure(Throwable caught) {
MessageBox.alert("Erro", "Contate o administrador", null);
}
@Override
public void onSuccess(List<Compromisso> result) {
compromissos = result;
}
};
getServico().listCompromisso(user, callback);
for (int i = 0; i < compromissos.size(); i++) {
Date now = new Date();
now.setDate(compromissos.get(i).getData().getDate());
Date start = (Date) now.clone();
int hour = compromissos.get(i).getHorai().getHours();
int min = compromissos.get(i).getHorai().getMinutes();
start.setHours(hour);
start.setMinutes(min);
Date end = (Date) now.clone();
end.setHours(compromissos.get(i).getHoraf().getHours());
end.setMinutes(compromissos.get(i).getHoraf().getMinutes());
Appointment appt = new Appointment();
appt.setStart(compromissos.get(i).getHorai());
appt.setEnd(compromissos.get(i).getHoraf());
if (compromissos.get(i).getPrivacidade().getCodigo() == "1") {
appt.setTitle(compromissos.get(i).getTitulo());
appt.setDescription(compromissos.get(i).getNota());
} else if (compromissos.get(i).getPrivacidade().getCodigo() == "2") {
appt.setTitle(compromissos.get(i).getTitulo());
appt.setDescription("Dados não disponiveis.");
} else {
appt.setTitle("Ocupado");
appt.setDescription("Dados não disponiveis.");
appt.setStyle(AppointmentStyle.GREY);
}
if (compromissos.get(i).getPrioridade().getCodigo() == "1") {
appt.setStyle(AppointmentStyle.RED);
} else if (compromissos.get(i).getPrioridade().getCodigo() == "2") {
appt.setStyle(AppointmentStyle.GREEN);
} else if (compromissos.get(i).getPrioridade().getCodigo() == "3") {
appt.setStyle(AppointmentStyle.GREEN);
}
list.add(appt);
}
return list;
}`
我该怎么办 ?