Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-从sqlite获取字符串数据并使用if条件更改listview输入_Android_Sqlite_Listview_Cursor_Android Sqlite - Fatal编程技术网

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

Android-从sqlite获取字符串数据并使用if条件更改listview输入,android,sqlite,listview,cursor,android-sqlite,Android,Sqlite,Listview,Cursor,Android Sqlite,我正在从sqlite获取数据并显示在列表视图中。sqlite中的所有数据都存储为String。比如说, ImageName UploadStatus test1.jpg 1 test2.jpg 2 我使用游标获取数据,如下所示: cursor = sqLiteDatabase.rawQuery("SELECT * from activityRes", null); ImageName_Array.clear(); UploadStat

我正在从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
。我尝试使用注释代码…但它会抛出整个表。

最好执行一个查询,返回您想要的结果,并将其添加到列表中。
您只需在
SELECT
语句中使用
CASE
表达式,就可以在
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")));
}
无需检查
光标
是否为
rawQuery()
的结果从不为
null


另外,不需要检查
cursor.getCount()
是否大于
0
,因为
while(cursor.moveToNext())
就足够了。

为什么不删除UploadStatus_数组。添加(cursor.getString(cursor.getColumnIndex(“UploadStatus”)?我已经删除了它…当运行代码的其他部分时,我不明白是什么问题?当您删除它时,您只需根据值分别添加Y或N,这取决于它是1还是2。我可以将其渲染为1和2。然而,如果我注释掉UploadStatus.Array行并取消注释随后的5行,将1转换为Y,2转换为N,那么它就不能正常工作。。。请记录cursor.getString(cursor.getColumnIndex(“UploadStatus”))的值,看看它是什么谢谢你…你的解决方案奏效了…也让我对sql查询有了不同的想法