Android - Получение строковых данных из sqlite и изменение ввода списка с условием if - PullRequest
0 голосов
/ 08 мая 2020

Я получаю данные из sqlite и отображаю их в виде списка. Все данные в sqlite хранятся как String. Например,

ImageName   UploadStatus
test1.jpg       1
test2.jpg       2

Я использую курсор для получения данных следующим образом:

cursor = sqLiteDatabase.rawQuery("SELECT * from activityRes", null);
        ImageName_Array.clear();
        UploadStatus_Array.clear();
        if (cursor != null && cursor.getCount() > 0) {
            if (cursor.moveToFirst()) {
                do {
                    ImageName_Array.add(cursor.getString(cursor.getColumnIndex("ImageName"))); 
                    UploadStatus_Array.add(cursor.getString(cursor.getColumnIndex("UploadStatus")));
//                    if (cursor.getString(cursor.getColumnIndex("UploadStatus")) == "1") {
//                        UploadStatus_Array.add("Y");
//                    } else if (cursor.getString(cursor.getColumnIndex("UploadStatus")) == "2") {
//                        UploadStatus_Array.add("N");
//                    }
                } while (cursor.moveToNext());
            }
        }

UploadStatus_Array.add получает данные и отображает их как 1 и 2. Однако Я хочу изменить отображение на Y и N. Я пробовал использовать закомментированные коды ... но он выбрасывает всю таблицу.

1 Ответ

1 голос
/ 08 мая 2020

Лучше выполнить запрос, который вернет те результаты, которые вам нужны, и просто добавит их в списки. Все, что вам нужно сделать, это использовать выражение CASE в операторе SELECT, и у вас будет столбец UploadStatus, заполненный Y s и N s:

String sql = "SELECT ImageName, CASE UploadStatus WHEN '1' THEN 'Y' WHEN '2' THEN 'N' END AS UploadStatus FROM activityRes"
cursor = sqLiteDatabase.rawQuery(sql, null);
ImageName_Array.clear();
UploadStatus_Array.clear();
while (cursor.moveToNext()) {
    ImageName_Array.add(cursor.getString(cursor.getColumnIndex("ImageName"))); 
    UploadStatus_Array.add(cursor.getString(cursor.getColumnIndex("UploadStatus")));
}

Существует нет необходимости проверять, соответствует ли cursor null. Результатом rawQuery() никогда не будет null. Также нет необходимости проверять, больше ли cursor.getCount(), чем 0, потому что while (cursor.moveToNext()) достаточно.

...