whereArgsとして単一の文字列を指定する場合 、次のように記述したかのように、SQLコマンドに1つの文字列が含まれることになります。
... WHERE _id IN ('1,2,42')
これにより、各_idが比較されます 値に対する値'1,2,42' 、もちろん機能しません。
3つのパラメーターマーカーを使用し、whereArgsに3つの文字列を指定した場合 配列の場合、次のように3つの文字列になります。
... WHERE _id in ('1','2','42')
これは、_idの場合にのみ機能します 列には整数のアフィニティがあります。これは、INTEGER PRIMARY KEYとして宣言された列には当てはまりますが、一般的な場合には当てはまりません。
AndroidデータベースAPIでは、クエリパラメータに文字列以外のタイプを含めることはできません。整数を使用する場合は、整数を直接挿入する必要があります(ianhanniballakeの回答のように):
String whereClause = getIdColumn() + " IN (" + TextUtils.join(",", ids) + ")";