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

Posted

技术标签:

【中文标题】Android - 从 sqlite 获取字符串数据并使用 if 条件更改列表视图输入【英文标题】:Android - Fetching string data from sqlite and change listview input with if condition 【发布时间】:2020-08-24 00:30:11 【问题描述】:

我正在从 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。我尝试使用注释代码......但它把整个桌子都扔了。

【问题讨论】:

你为什么不直接删除 UploadStatus_Array.add(cursor.getString(cursor.getColumnIndex("UploadStatus"))); ? 我已将其删除...运行其他部分代码时 我不明白有什么问题?删除它时,您只需根据值分别添加 Y 或 N 是 1 还是 2 我可以将其呈现为 1 和 2。但是,如果我注释掉 UploadStatus.Array 行并取消注释后续 5 行,以将 1 转换为 Y 并将 2 转换为 N,则它不起作用 嗯...请记录 cursor.getString(cursor.getColumnIndex("UploadStatus")) 的值,看看它是什么 【参考方案1】:

最好执行一个查询,返回您想要的结果,然后将它们添加到列表中。 您所要做的就是在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()) 就足够了。

【讨论】:

谢谢...您的解决方案有效...也让我对 sql 查询有了不同的看法

以上是关于Android - 从 sqlite 获取字符串数据并使用 if 条件更改列表视图输入的主要内容,如果未能解决你的问题,请参考以下文章

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

从android数据库sqlite中获取特定数据

Android 从 Sqlite 数据库保存和获取图像

从 Android Studio 中的 SQLite 数据库中以字符串形式检索数据

Android 应用程序从 SQLite 获取数据

Android Sqlite:如何从 Listview 中获取 SQLite rowId?