il codice completo
codice:
@Override
public List<WeekViewEvent> onMonthChange(int newYear, int newMonth) {
SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM-dd");
final String strDate = simpleFormat.format(calendarioFooter.getTime());
List<WeekViewEvent> events = new ArrayList<WeekViewEvent>();
SQLiteDatabase db = new DatabaseHelper(getActivity()).getReadableDatabase();
String tabella_op = "SELECT " +
"a.id_appuntamento, " +
"a.id_operatore," +
"a.id_servizio, " +
"a.data, " +
"a.ora_inizio, " +
"a.ora_fine, " +
"c._id, " +
"c.nome, " +
"c.cognome, " +
"o.nome, " +
"s.colore, " +
"s.tipo " +
"FROM Appuntamenti a " +
"LEFT JOIN Operatori o ON (a.id_operatore = o._id) " +
"LEFT JOIN Clienti c ON (a.id_cliente = c._id) " +
"LEFT JOIN Servizi s ON (a.id_servizio = s._id) " +
"WHERE a.data LIKE '" + strDate + "' AND o.eliminato = 0 " +
"ORDER BY a.id_operatore ASC";
Cursor cur = db.rawQuery(tabella_op, null);
while (cur.moveToNext()) {
startTime = (Calendar) calendarioFooter.clone();
id_appuntamento = cur.getString(0);
id_operatore = cur.getInt(1);//****//
id_servizio = cur.getString(2);
dat = cur.getString(3);
ora_iniz = cur.getString(4);
ora_fin = cur.getString(5);
id_client = cur.getString(6);
nome_cliente = cur.getString(7);
cognome_cliente = cur.getString(8);
nome_operatore = cur.getString(9);
colore_serv = cur.getInt(10);
tipo_serv = cur.getString(11);
startTime.set(Calendar.DAY_OF_MONTH, giorno_ok);
startTime.add(Calendar.DATE, numero);
// Non mi importa più di quale sia l'effettivo valore, conta solo la "posizione"
numero++;
//inizio
startTime.set(Calendar.HOUR_OF_DAY, ora_inizio);
startTime.set(Calendar.MINUTE, minuto_inizio);
startTime.set(Calendar.MONTH, newMonth - 1);
startTime.set(Calendar.YEAR, newYear);
//fine
Calendar endTime = (Calendar) startTime.clone();
endTime.set(Calendar.HOUR_OF_DAY, ora_fine);
endTime.set(Calendar.MINUTE, minuto_fine);
//setto la weekview
WeekViewEvent event = new WeekViewEvent(id_appuntamento, getEventTitle(startTime, endTime), startTime, endTime);
event.setColor(colore_serv);
events.add(event);
}
cur.close();
db.close();
return events;
}
la classe WeekViewEvent
codice:
public class WeekViewEvent {
private String mId;
private Calendar mStartTime;
private Calendar mEndTime;
private String mName;
private int mColor;
public WeekViewEvent(String id, String name, int startYear, int startMonth, int startDay, int startHour, int startMinute, int endYear, int endMonth, int endDay, int endHour, int endMinute) {
this.mId = id;
this.mStartTime = Calendar.getInstance();
this.mStartTime.set(Calendar.YEAR, startYear);
this.mStartTime.set(Calendar.MONTH, startMonth-1);
this.mStartTime.set(Calendar.DAY_OF_MONTH, startDay);
this.mStartTime.set(Calendar.HOUR_OF_DAY, startHour);
this.mStartTime.set(Calendar.MINUTE, startMinute);
this.mEndTime = Calendar.getInstance();
this.mEndTime.set(Calendar.YEAR, endYear);
this.mEndTime.set(Calendar.MONTH, endMonth-1);
this.mEndTime.set(Calendar.DAY_OF_MONTH, endDay);
this.mEndTime.set(Calendar.HOUR_OF_DAY, endHour);
this.mEndTime.set(Calendar.MINUTE, endMinute);
this.mName = name;
}
public WeekViewEvent(String id, String name, Calendar startTime, Calendar endTime) {
this.mId = id;
this.mName = name;
this.mStartTime = startTime;
this.mEndTime = endTime;
}
public Calendar getStartTime() {
return mStartTime;
}
public void setStartTime(Calendar startTime) {
this.mStartTime = startTime;
}
public Calendar getEndTime() {
return mEndTime;
}
public void setEndTime(Calendar endTime) {
this.mEndTime = endTime;
}
public String getName() {
return mName;
}
public void setName(String name) {
this.mName = name;
}
public int getColor() {
return mColor;
}
public void setColor(int color) {
this.mColor = color;
}
public String getId() {
return mId;
}
public void setId(String id) {
this.mId = id;
}
}
questo screenshot del programma mostra il buon funzionamento, perchè le 3 colonne hanno l'id che corrisponde nella tabella "Appuntamenti"Screenshot_2015-09-22-14-52-27.jpg
Questo sotto invece mostra cosa accade se ad esempio una uno degli id della Tabella A(operatori) non è presente nella Tabella B(appuntamenti).
Se controlli lo screenshot di prima il riquadro rosso con scritto "Giorgia Capogrossi" dovrebbe essere visualizzato nella terza colonna.
Screenshot_2015-09-22-14-56-41.jpg