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