Android SQLite игнорировать, чтобы добавить, если мир существует в ArrayList - PullRequest
0 голосов
/ 03 сентября 2018

Я использую Android SQLite для добавления ArrayList. Я хочу сделать это: если есть мир, который я выберу в списке и где угодно, я хочу заблокировать, чтобы добавить это.

Например; если в ArrayList существует «Duck U», я хочу игнорировать добавление базы данных в него.

Я устал list.contains("Duck u"); но не работает.

Мой код для добавления в базу данных:

public void HistoryADD(ArrayList<String> full, String owner){
    int size = full.size();
    SQLiteDatabase db = getWritableDatabase();
    try{
        for (int i = 0; i < size ; i++){
            ContentValues cv = new ContentValues();
            cv.put(FULL, full.get(i));
            cv.put(OWNER, owner);
            Log.d("Added ",""+ cv);
            db.insertOrThrow(TABLE_NAME, null, cv);
        }
        db.close();
    }catch (Exception e){
        System.out.println("Could not added");
    }}

Любой образец для этого? Большое спасибо.

1 Ответ

0 голосов
/ 03 сентября 2018

Я считаю, что следующее может быть решением (отмечая, что оно обслуживает несколько слов (строк), которые следует игнорировать (пропустить вставку))

При этом используется метод, а именно ifHaystackContainsNeedle, который будет искать ArrayList (стог сена) в другом ArrayList (игле) (таким образом, обслуживая несколько строк, которые следует игнорировать). Этот метод возвращает true, если какая-либо из игл найдена в стоге сена. Так что, если это возвращает true, вы можете просто продолжить цикл for, пропуская

public void HistoryADD(ArrayList<String> full, String owner,ArrayList<String> ignore){
    int size = full.size();
    SQLiteDatabase db = getWritableDatabase();
    try{
        for (int i = 0; i < size ; i++){
            //<<<<<<<<<< START OF ADDED TEST
            if (ifHaystackContainsNeedle,owner,ignore) {
                Log.d("Skipped ","Owner " + get(i) + " was skipped.");
                continue;
            }
            //<<<<<<<<<< END OF ADDED TEST
            ContentValues cv = new ContentValues();
            cv.put(FULL, full.get(i));
            cv.put(OWNER, owner);
            Log.d("Added ",""+ cv);
            db.insertOrThrow(TABLE_NAME, null, cv);
        }
        db.close();
    }catch (Exception e){
        System.out.println("Could not added");
    }}


//<<<<<<<<<< NEW METHOD
private boolean ifHaystackContainsNeedle(ArrayList<String> haystack, ArrayList<String> needle) {
    for (String s: haystack) {
        for (String s2: needle) {
            if (s.contains(s2)) {
                return true;
            }
        }
    }
    return false;
}
  • Примечание это принципиальный код, он был полностью протестирован и поэтому может содержать некоторые ошибки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...