Wenn Sie eine einzelne Zeichenfolge als whereArgs angeben , endet ein einzelner String im SQL-Befehl, als ob Sie Folgendes geschrieben hätten:
... WHERE _id IN ('1,2,42')
Dies würde jede _id vergleichen Wert gegen den Wert '1,2,42' , was natürlich nicht funktioniert.
Wenn Sie drei Parametermarkierungen verwenden und drei Zeichenfolgen in den whereArgs angeben array erhalten Sie am Ende drei Strings wie diese:
... WHERE _id in ('1','2','42')
Dies funktioniert nur, wenn die _id Spalte hat ganzzahlige Affinität, was für eine als INTEGER PRIMARY KEY deklarierte Spalte gilt, aber nicht im allgemeinen Fall.
Die Android-Datenbank-API erlaubt keinen anderen Typ als Zeichenfolge für Abfrageparameter. Wenn Sie Ganzzahlen verwenden, sollten Sie sie einfach direkt einfügen (wie in der Antwort von ianhanniballake):
String whereClause = getIdColumn() + " IN (" + TextUtils.join(",", ids) + ")";