Java-Android,将ListView绑定到SQLite数据库
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java-Android,将ListView绑定到SQLite数据库,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4068字,纯文字阅读大概需要6分钟。
内容图文
![Java-Android,将ListView绑定到SQLite数据库](/upload/InfoBanner/zyjiaocheng/881/dcfc27f8b04b4992bcd938b36242d90d.jpg)
我有一个SQLiteDatabase帮助器,它仅从数据库返回一个带有名称列的游标:
public Cursor getNames() {
Cursor cursor = db.query(TABLE_NAME, new String[] {NAME}, null, null, null, null, null);
return cursor;
}
我试图将此光标绑定到布局中包含的一个简单的ListView:
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
Java:
Cursor cursor = db.getNames();
startManagingCursor(cursor);
ListAdapter adapter = new SimpleCursorAdapter (
this,
android.R.layout.simple_list_item_1,
cursor,
new String[] {constants.NAME},
new int[] {android.R.id.text1}
);
setListAdapter(adapter);
我已按照我可以找到的所有教程进行操作,但该应用程序仍然意外停止.请告诉我我做错了!
这是LOGCAT跟踪,希望这就是您需要的:
12-03 17:18:41.557: E/AndroidRuntime(30413): FATAL EXCEPTION: main
12-03 17:18:41.557: E/AndroidRuntime(30413): java.lang.RuntimeException: Unable to start activity ComponentInfo{george.frost.YourCarbDatabase/com.android.CarbCount.Search}: java.lang.IllegalArgumentException: column '_id' does not exist
12-03 17:18:41.557: E/AndroidRuntime(30413): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1659)
12-03 17:18:41.557: E/AndroidRuntime(30413): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1675)
12-03 17:18:41.557: E/AndroidRuntime(30413): at android.app.ActivityThread.access$1500(ActivityThread.java:121)
12-03 17:18:41.557: E/AndroidRuntime(30413): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:943)
12-03 17:18:41.557: E/AndroidRuntime(30413): at android.os.Handler.dispatchMessage(Handler.java:99)
12-03 17:18:41.557: E/AndroidRuntime(30413): at android.os.Looper.loop(Looper.java:130)
12-03 17:18:41.557: E/AndroidRuntime(30413): at android.app.ActivityThread.main(ActivityThread.java:3701)
12-03 17:18:41.557: E/AndroidRuntime(30413): at java.lang.reflect.Method.invokeNative(Native Method)
12-03 17:18:41.557: E/AndroidRuntime(30413): at java.lang.reflect.Method.invoke(Method.java:507)
12-03 17:18:41.557: E/AndroidRuntime(30413): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
12-03 17:18:41.557: E/AndroidRuntime(30413): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:624)
12-03 17:18:41.557: E/AndroidRuntime(30413): at dalvik.system.NativeStart.main(Native Method)
12-03 17:18:41.557: E/AndroidRuntime(30413): Caused by: java.lang.IllegalArgumentException: column '_id' does not exist
12-03 17:18:41.557: E/AndroidRuntime(30413): at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:314)
12-03 17:18:41.557: E/AndroidRuntime(30413): at android.widget.CursorAdapter.init(CursorAdapter.java:111)
12-03 17:18:41.557: E/AndroidRuntime(30413): at android.widget.CursorAdapter.<init>(CursorAdapter.java:90)
12-03 17:18:41.557: E/AndroidRuntime(30413): at android.widget.ResourceCursorAdapter.<init>(ResourceCursorAdapter.java:47)
12-03 17:18:41.557: E/AndroidRuntime(30413): at android.widget.SimpleCursorAdapter.<init>(SimpleCursorAdapter.java:84)
12-03 17:18:41.557: E/AndroidRuntime(30413): at com.android.CarbCount.Search.onCreate(Search.java:42)
12-03 17:18:41.557: E/AndroidRuntime(30413): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
12-03 17:18:41.557: E/AndroidRuntime(30413): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1623)
12-03 17:18:41.557: E/AndroidRuntime(30413): ... 11 more
解决方法:
不推荐使用startManagingCursor()方法.您应该改用Loader API.如果您要定位的API级别低于11的设备,则需要使用compatibility library.
由于它表明您只是想从SQLiteDatabase加载某些数据,因此您无需创建ContentProvider,但可以扩展Loader.可以在此处找到示例和更多信息:CursorLoader usage without ContentProvider
另外,如果“活动”仅显示ListView,则可能要切换到ListActivity,因为它使绑定数据和获取ID(例如)更加容易.
自您发布LogCat以来:
问题在于,SimpleCursorAdapter类需要一个名为_id的列来获取数据库中每一行数据的ID.有关该问题的更多信息,请参见:Android column ‘_id’ does not exist?
内容总结
以上是互联网集市为您收集整理的Java-Android,将ListView绑定到SQLite数据库全部内容,希望文章能够帮你解决Java-Android,将ListView绑定到SQLite数据库所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。