Quando dai una singola stringa come whereArgs
, una singola stringa finisce nel comando SQL, come se avessi scritto questo:
... WHERE _id IN ('1,2,42')
Questo confronterebbe ogni _id
valore rispetto al valore '1,2,42'
, che ovviamente non funziona.
Se usi tre indicatori di parametro e fornisci tre stringhe in whereArgs
array, ti ritroverai con tre stringhe, come questa:
... WHERE _id in ('1','2','42')
Funziona solo quando il _id
la colonna ha un'affinità intera, che è vera per una colonna dichiarata come INTEGER PRIMARY KEY, ma non nel caso generale.
L'API del database Android non consente ai parametri di query di avere alcun tipo ma stringa. Quando si utilizzano numeri interi, è sufficiente inserirli direttamente (come nella risposta di ianhanniballake):
String whereClause = getIdColumn() + " IN (" + TextUtils.join(",", ids) + ")";