Android - 从 sqlite 中获取字符串数据并使用 if 条件更改列表视图输入

Android - Fetching string data from sqlite and change listview input with if condition

我正在从 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。但是,我想将显示更改为 YN。我尝试使用注释代码......但它正在抛出整个 table。

最好执行一个查询 return 您想要的结果,然后将它们添加到列表中。
您所要做的就是在 SELECT 语句中使用 CASE 表达式,您将在 UploadStatus 列中填充 Ys 和 Ns:

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 是否为 nullrawQuery() 的结果永远不会是 null.
也不需要检查 cursor.getCount() 是否大于 0 因为 while (cursor.moveToNext()) 就足够了。