配列比較とか。
DBにあるレコード群と手元の配列を比較、DBにない値のみを配列で返すコードを記述。
多分もっとうまい方法があるんだよな…
動作としては多分間違ってないけどfor文いっぱいで辛い。
ところでandroidのCursorクラスにhasNextがないのって微妙だと思うんだけどどうよ
/** * @param name_id_array 比較する配列 * @return DBテーブルと比較、テーブルにない値のみを取り出した配列を返す、 */ public ArrayList<String> compareTable( ArrayList<String> name_id_array_list) { String where_in = "where " + PKEYCOL_NAME + " in ("; String[] name_id_array = new String[name_id_array_list .size()]; for (int i = 0; i < name_id_array_list.size(); i++) { name_id_array[i] = name_id_array_list.get(i); where_in += "?,"; } where_in = where_in.substring(0, where_in.length() - 1) + ");"; Cursor c = readableDB.rawQuery("select * from " + TABLE_NAME + where_in, name_id_array); String[] exist_id = new String[c.getCount()]; c.moveToFirst(); for (int i = 0; i < c.getCount(); i++) { exist_id[i] = c.getString(0); c.moveToNext(); } Arrays.sort(exist_id); Arrays.sort(name_id_array); int max_int = exist_id.length; ArrayList<String> return_arraylist = new ArrayList<String>(); for (int i = max_int; i > 0; i--) { for (int j = name_id_array.length; j > 0; j--) { if (exist_id[i].equals(name_id_array[j])) { return_arraylist.add(exist_id[i]); break; } } max_int--; } return return_arraylist; }