Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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 使用SimpleCursorAdapter获得了IllegalArgumentException_Android_Android Sqlite_Android Adapter - Fatal编程技术网

Android 使用SimpleCursorAdapter获得了IllegalArgumentException

Android 使用SimpleCursorAdapter获得了IllegalArgumentException,android,android-sqlite,android-adapter,Android,Android Sqlite,Android Adapter,我有一个SQLite数据库,我想在listView中显示数据,我用一个SimpleCursorAdapter尝试它: contactAdapter = new SimpleCursorAdapter(this, R.layout.contact_row, cursor, new String[] { MyDb.ACCOUNT_NAME },

我有一个SQLite数据库,我想在listView中显示数据,我用一个
SimpleCursorAdapter
尝试它:

contactAdapter = new SimpleCursorAdapter(this, R.layout.contact_row, cursor, 
                                         new String[] { MyDb.ACCOUNT_NAME },
                                         new int[] { R.id.contactNameTv });
就在这条线上,我得到了一个

IllegalArgumentException:列“\u id”不存在

好吧,谢谢JVM,我不知道该怎么办,因为我甚至没有使用
\u id
列,这个语句也是错误的,因为我导出了数据库并用sqlite database opener打开,我可以在数据库中看到
\u id
列,所以它确实存在

有人能告诉我这个错误什么时候会出现,它想告诉我什么吗

电子数据交换:

njzk2将我指对了,我的游标get func中的“_id”列没有被查询到。谢谢。

请参阅上面的示例,它可能会帮助您解决类似问题 创建表时应添加“_id”字段

 //example 

   "CREATE TABLE TABLE_NAME (_id INTEGER PRIMARY KEY AUTOINCREMENT,field1 TEXT, field2 TEXT, etc TEXT)";
    
游标必须包含名为“\u id”的列,否则此类将无法工作。 此外,如果合并的游标在其“\u id”中有重叠值,则将{@link android.database.MergeCursor}与此类一起使用将不起作用 列

警告 SimpleCrsorAdapter此构造函数在API级别11中被弃用。不鼓励使用此选项,因为它会导致在应用程序的UI线程上执行光标查询,从而导致响应性差,甚至应用程序没有响应错误。或者,将LoaderManager与游标Loader一起使用

另一种方法是使用CursorAdapter和CursorLoader

使用数据库时,CursorAdapter非常有用,例如,如果您希望直接从数据库在ListView、GridView或RecyclerView中显示数据列表

CursorLoader在后台运行异步查询

我希望它能帮助你


干杯。

您不用它,但SimpleCorsorAdapter会用。必须使用cursoradapterOK,为什么它总是告诉我它不存在,而实际上它不存在?:)它在你的游标中吗?发布光标投影代码哦,我知道了,我现在理解的那个专栏没有被问到。谢谢