使用帮助类创建的游标来填充ListView



我确实有一个关于这个代码片段的问题。

我有一个SQLiteDatabase,它通过一个"Manager"类连接。我调用以下函数:

        try {
        String[] selectionArgs = { String.valueOf(_id) };
        SQLiteDatabase dbReadable = Db.getReadableDatabase();
        Cursor cursor =  dbReadable.rawQuery(sqlQuery, selectionArgs);
        return cursor;
    } catch (SQLiteException e) {
        Log.e(tag, "SQLiteException: /n " + sqlQuery);
    }
    return null;

sqlQuery是一个有效的SQL查询,因为它不会抛出SQLiteException()。因此,我想要du的是向另一个类提供一个包含数据库中几行的游标,这样这些信息就会显示在ListView中。

Cursor cursor = Manager.getChildren(id);
mAdapter = new SimpleCursorAdapter(context ,R.layout.small_listitem, cursor , uiBindFrom, uiBindTo,0);
setListAdapter(mAdapter);

然而,我正在做的任何事情都会破坏我的应用程序,或者ListView没有显示任何内容。

所以基本上我有两个问题:这是正确的方法吗-我不想创建结果列表。第二:我需要在哪里关闭()我的数据库。或者在关闭光标时就足够了。

我试了一整天,我觉得我有点卡住了。

我看到有人要Logcat。这就是我得到的:

07-12 00:50:07.868: E/AndroidRuntime(14799): FATAL EXCEPTION: main
07-12 00:50:07.868: E/AndroidRuntime(14799): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.dornathal.planyourmeals/de.dornathal.planyourmeals.view.FoodInformation}: java.lang.NullPointerException
07-12 00:50:07.868: E/AndroidRuntime(14799):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
07-12 00:50:07.868: E/AndroidRuntime(14799):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
07-12 00:50:07.868: E/AndroidRuntime(14799):    at android.app.ActivityThread.access$600(ActivityThread.java:123)
07-12 00:50:07.868: E/AndroidRuntime(14799):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
07-12 00:50:07.868: E/AndroidRuntime(14799):    at android.os.Handler.dispatchMessage(Handler.java:99)
07-12 00:50:07.868: E/AndroidRuntime(14799):    at android.os.Looper.loop(Looper.java:137)
07-12 00:50:07.868: E/AndroidRuntime(14799):    at android.app.ActivityThread.main(ActivityThread.java:4424)
07-12 00:50:07.868: E/AndroidRuntime(14799):    at java.lang.reflect.Method.invokeNative(Native Method)
07-12 00:50:07.868: E/AndroidRuntime(14799):    at java.lang.reflect.Method.invoke(Method.java:511)
07-12 00:50:07.868: E/AndroidRuntime(14799):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
07-12 00:50:07.868: E/AndroidRuntime(14799):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
07-12 00:50:07.868: E/AndroidRuntime(14799):    at dalvik.system.NativeStart.main(Native Method)
07-12 00:50:07.868: E/AndroidRuntime(14799): Caused by: java.lang.NullPointerException
07-12 00:50:07.868: E/AndroidRuntime(14799):    at de.dornathal.planyourmeals.view.FoodBoxPicture.onCreateView(FoodBoxPicture.java:37)
07-12 00:50:07.868: E/AndroidRuntime(14799):    at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460)
07-12 00:50:07.868: E/AndroidRuntime(14799):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911)
07-12 00:50:07.868: E/AndroidRuntime(14799):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
07-12 00:50:07.868: E/AndroidRuntime(14799):    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
07-12 00:50:07.868: E/AndroidRuntime(14799):    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444)
07-12 00:50:07.868: E/AndroidRuntime(14799):    at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:551)
07-12 00:50:07.868: E/AndroidRuntime(14799):    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1133)
07-12 00:50:07.868: E/AndroidRuntime(14799):    at android.app.Activity.performStart(Activity.java:4475)
07-12 00:50:07.868: E/AndroidRuntime(14799):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1929)
07-12 00:50:07.868: E/AndroidRuntime(14799):    ... 11 more

您需要创建另一个类。有些东西像模型类,UI(Listview)和Manager(SQLIte助手类)可以很容易地使用它。因此,在您从数据库中查询后,使用返回的游标来填充Model类的列表,您可以将其发送到Listview类,它不需要处理任何数据库类。这将是首选的方法,因为UI应该具有对数据库内容的抽象。

例如型号等级

字符串firstName;字符串lastName}

使用数据库填充列表视图可能使用了一个数组列表,用模型类的对象归档

//从您的错误来看,您似乎只是有一个nullpointer异常u,要么发布FoodBoxPicture.java类,要么在该类的第37行检查wat为null但是一定要尝试使用一个像我上面提到的新类,会让事情变得更容易

最新更新