こんにちは、私は 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;
}`
私は何をすべきか ?