è necessario utilizzare una query prima per esempio come questo:
private static final String SQL_DISTINCT_ENAME = "SELECT DISTINCT "+EmpDao.Properties.EName.columnName+" FROM "+EmpDao.TABLENAME;
public static List<String> listEName(DaoSession session) {
ArrayList<String> result = new ArrayList<String>();
Cursor c = session.getDatabase().rawQuery(SQL_DISTINCT_ENAME, null);
try{
if (c.moveToFirst()) {
do {
result.add(c.getString(0));
} while (c.moveToNext());
}
} finally {
c.close();
}
return result;
}
Naturalmente si può aggiungere un po 'di filtro-criteri per la query pure.
La stringa statica SQL_DISTINCT_ENAME
viene utilizzata per le prestazioni, in modo che la stringa di query non debba essere creata ogni volta.
EmpDao.Properties
e EmpDao.TABLENAME
viene utilizzato per avere sempre i nomi delle colonne e i nomi delle tabelle esatti come vengono generati da greendao.
Ottimo, funziona! – Ananth
@oli ha modificato questa risposta e ha notato che questo codice deve essere sincronizzato perché 'Cursore' non è protetto da thread. Ma poiché 'Cursor c' è definito all'interno del metodo e non viene fornito al mondo esterno, questo metodo è thread-safe poiché ogni thread avrà il suo' Cursore'. Si prega di non reedit l'argomento di sincronizzazione, ma lasciare un commento. Post scriptum IMHO la modifica non ha seguito [le regole] (http://stackoverflow.com/help/privileges/edit) e non avrebbe dovuto essere accettata, soprattutto dal momento che questa risposta è accettata! – AlexS