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

Android 使用帮助类创建的游标填充ListView,android,cursor,sqlite,Android,Cursor,Sqlite,关于这个代码片段,我确实有一个问题 我有一个SQLiteDatabase,它通过一个“Manager”类连接。我正在调用以下函数: try { String[] selectionArgs = { String.valueOf(_id) }; SQLiteDatabase dbReadable = Db.getReadableDatabase(); Cursor cursor = dbReadable.rawQuery(sqlQu

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

我有一个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()。 因此,我想要做的是向另一个类提供一个带有我数据库的几行的游标,以便这些信息将显示在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)和管理器(SQLIte helper类)可以很容易地使用它。所以,在从数据库查询之后,使用返回的游标填充模型类列表,您可以将其发送到Listview类,它不需要处理任何数据库类。这将是首选的方法,因为UI应该对数据库内容有一个抽象

e、 g.示范班

{

字符串名; 字符串姓氏 }

使用数据库填充 列表视图可能使用一个arraylist,其中包含模型类的对象

//从您的错误来看,您似乎只有一个null指针异常u post FoodBoxPicture.java类或check wat在该类的第37行为null 但一定要尝试使用我上面提到的新类,
会让事情变得更简单

谢谢。我现在已经创建了我自己的ArrayAdapter类,我用[]填充它,这个ArrayAdapter将由函数提供。[Quote]Android,你通常根本不需要关闭数据库[/Quote]我经历了很多异常,告诉我数据库已关闭。它们出现在打开可读写数据库之后。但是,只有在重新打开这些数据库后才会引发异常--现在我已经在请求的位置添加了所有close()函数,现在不再出现异常。