我正在尝试创建一个列表适配器,它可以引入并显示数据库中的数据。据我所知,它正在提取信息,但是当我尝试从新的Simple游标适配器创建ListAdapter时它失败了。不知道我在这里做错了什么。
SQLiteDatabase db = myDbHelper.getReadableDatabase();
String select = "Select StateID, State, Details from States";
Cursor cursor = db.rawQuery(select, null);
startManagingCursor(cursor);
ListAdapter adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1,
cursor,
new String[]{"State"},
new int[]{android.R.id.text1});
setListAdapter(adapter);
第二部分将弄清楚如何将StateID指定为列表中的行ID,以便当有人点击状态时我可以访问它,但是它不可见。
答案 0 :(得分:4)
如果您在Eclipse中使用adb logcat
,DDMS或DDMS透视图来查看与崩溃关联的堆栈跟踪,这确实很有帮助。否则,当你说它“失败”时,我们不知道它意味着什么。
但是,我只能从代码检查中看到一个主要缺陷:您需要一个名为_ID
的列才能使用SimpleCursorAdapter
。 _ID
必须是唯一的,并且需要Java long
(SQLite中的INTEGER
)。
理想情况下,您将StateID
替换为_ID
。在这种情况下,您的“第二部分”将被解决,因为行的ID是您的_ID
值。例如,当您点击列表项时获得long id
参数时,这就是_ID
值。
答案 1 :(得分:0)
对我来说一切似乎都很好。
如果您需要获取行ID,则查询结果中必须有一个_ID列,该列将被识别为行ID。