我想根據this教程實現一個可排序的listView。我的數據庫中有這些列:關於可排序ListView的SQLite
- ID
- NAME
- 集團
- ORDER
當我插入數據庫的新數據,我設置名稱和組列,該ID是自動生成的。起初,我沒有在ORDER列中引入任何內容,因爲我將需要稍後修改此值,並且第一次不相關。
因此,在第一個活動中,我在數據庫中插入先前註釋的列,然後轉到listActivity,其中將顯示帶有名稱的listview。我可以介紹幾個不同的名稱,並使用GROUP列組織它們。所以當我想讀取數據庫來綁定列表視圖上的結果時,我會查詢特定的GROUP。
這裏是ORDER列的功能,如果該組已經存在於數據庫中,它將加載該命令並按照該順序將這些名稱放入列表視圖中。但如果它是一個新的組,ORDER列將是空的,當對listview上的項目進行排序時,我將定義每個項目的順序。
我的問題:
從數據庫是空的,所以沒有訂單就堅定,當我嘗試查詢特定組,起初我是有順序列問題的角度出發,因爲它說明該列不存在或類似的東西。但是現在,我用適配器構造函數得到了一個NPE,我不知道它是否與它或查詢有關。
這是數據庫列的投影:
String[] PROJECTION = {_ID, .NAME, GROUP, ORDER};
在這裏我讀數據庫的特定羣體,我將它綁定在列表視圖(以及從哪裏獲得NPE):
String selection = GROUP + "=?";
String[] selectionArgs = new String[] {group};
String orden = ORDER + " ASC";
try {
cursor = getContentResolver().query(TravelOrderProvider.CONTENT_URI, PROJECTION, selection , selectionArgs , orden);
} catch (Exception e) {}
ListAdapter mAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor, null, null); //NPE HERE
setListAdapter(mAdapter);
cursor.close();
仍然必須檢查數據庫上是否存在該組。
logcat的補充道:
06-10 15:52:28.473: E/AndroidRuntime(18016): FATAL EXCEPTION: main
06-10 15:52:28.473: E/AndroidRuntime(18016): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.irvvin.carpooling/com.irvvin.carpooling.SetTravelOrderActivity}: java.lang.NullPointerException
06-10 15:52:28.473: E/AndroidRuntime(18016): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2194)
06-10 15:52:28.473: E/AndroidRuntime(18016): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2229)
06-10 15:52:28.473: E/AndroidRuntime(18016): at android.app.ActivityThread.access$600(ActivityThread.java:139)
06-10 15:52:28.473: E/AndroidRuntime(18016): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1261)
06-10 15:52:28.473: E/AndroidRuntime(18016): at android.os.Handler.dispatchMessage(Handler.java:99)
06-10 15:52:28.473: E/AndroidRuntime(18016): at android.os.Looper.loop(Looper.java:154)
06-10 15:52:28.473: E/AndroidRuntime(18016): at android.app.ActivityThread.main(ActivityThread.java:4944)
06-10 15:52:28.473: E/AndroidRuntime(18016): at java.lang.reflect.Method.invokeNative(Native Method)
06-10 15:52:28.473: E/AndroidRuntime(18016): at java.lang.reflect.Method.invoke(Method.java:511)
06-10 15:52:28.473: E/AndroidRuntime(18016): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-10 15:52:28.473: E/AndroidRuntime(18016): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-10 15:52:28.473: E/AndroidRuntime(18016): at dalvik.system.NativeStart.main(Native Method)
06-10 15:52:28.473: E/AndroidRuntime(18016): Caused by: java.lang.NullPointerException
06-10 15:52:28.473: E/AndroidRuntime(18016): at android.support.v4.widget.SimpleCursorAdapter.findColumns(SimpleCursorAdapter.java:312)
06-10 15:52:28.473: E/AndroidRuntime(18016): at android.support.v4.widget.SimpleCursorAdapter.<init>(SimpleCursorAdapter.java:66)
06-10 15:52:28.473: E/AndroidRuntime(18016): at com.irvvin.carpooling.SetTravelOrderActivity.getTravelers(SetTravelOrderActivity.java:95)
06-10 15:52:28.473: E/AndroidRuntime(18016): at com.irvvin.carpooling.SetTravelOrderActivity.onCreate(SetTravelOrderActivity.java:51)
06-10 15:52:28.473: E/AndroidRuntime(18016): at android.app.Activity.performCreate(Activity.java:4531)
06-10 15:52:28.473: E/AndroidRuntime(18016): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1071)
06-10 15:52:28.473: E/AndroidRuntime(18016): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2150)
後logcat的消息 –
@Mukesh庫馬爾logcat的加入 – masmic
你傳遞兩個NULL參數讓你獲得一個NPE – LordRaydenMK