2012-06-28 52 views
0

我有一些問題,我的歷史listview。對logcat 它聲明問題的原因是new_item。Logcat得到空指針異常?

這是我的代碼

c.mDbHelper.fetchAllNotes(); 
    Item new_item;  
for (i=0; i<c.getCount(); i++) { 

    new_item.set(c.getString(1), c.getString(2), c.getInt(4), Uri.parse(c.getString(5))); 
    item.add(new_item); 
    c.moveToNext(); 
} 

產品是I類製成。這是set()方法。

public void set(String name, String code, int qty, Uri imageuri){ 
    this.name = name; 
    this.code = code; 
    this.qty = qty; 
    this.imageuri = imageuri; 
} 

這是我的logcat

06-28 09:12:49.528: E/AndroidRuntime(818): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.avs.QRscanner/com.android.avs.QRscanner.ViewStock}: java.lang.NullPointerException 
06-28 09:12:49.528: E/AndroidRuntime(818): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
06-28 09:12:49.528: E/AndroidRuntime(818): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
06-28 09:12:49.528: E/AndroidRuntime(818): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
06-28 09:12:49.528: E/AndroidRuntime(818): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
06-28 09:12:49.528: E/AndroidRuntime(818): at android.os.Handler.dispatchMessage(Handler.java:99) 
06-28 09:12:49.528: E/AndroidRuntime(818): at android.os.Looper.loop(Looper.java:123) 
06-28 09:12:49.528: E/AndroidRuntime(818): at android.app.ActivityThread.main(ActivityThread.java:3683) 
06-28 09:12:49.528: E/AndroidRuntime(818): at java.lang.reflect.Method.invokeNative(Native Method) 
06-28 09:12:49.528: E/AndroidRuntime(818): at java.lang.reflect.Method.invoke(Method.java:507) 
06-28 09:12:49.528: E/AndroidRuntime(818): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
06-28 09:12:49.528: E/AndroidRuntime(818): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
06-28 09:12:49.528: E/AndroidRuntime(818): at dalvik.system.NativeStart.main(Native Method) 
06-28 09:12:49.528: E/AndroidRuntime(818): Caused by: java.lang.NullPointerException 
06-28 09:12:49.528: E/AndroidRuntime(818): at  com.android.avs.QRscanner.CustomAdapter.getCount(CustomAdapter.java:24) 
06-28 09:12:49.528: E/AndroidRuntime(818): at android.widget.ListView.setAdapter(ListView.java:454) 
06-28 09:12:49.528: E/AndroidRuntime(818): at com.android.avs.QRscanner.ViewStock.onCreate(ViewStock.java:36) 
06-28 09:12:49.528: E/AndroidRuntime(818): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
06-28 09:12:49.528: E/AndroidRuntime(818): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
06-28 09:12:49.528: E/AndroidRuntime(818): ... 11 more 

DbHelper有5列,內搭字符串,字符串,字符串,整數,字符串(用於存儲URI)

在此先感謝您的幫助。

編輯:添加NEW_ITEM到列表項

+0

.........你需要初始化'new_item' ........... –

+0

請給我們你的LogCat錯誤堆棧 –

回答

1

你需要初始化NEW_ITEM,即(低於3線)

c.mDbHelper.fetchAllNotes(); 
Item new_item; // <-- Add this (thx jack57) 
for (i=0; i<c.getCount(); i++) { 
new_item = new Item(); // <-- Initialize here to prevent NullPointerException 
new_item.set(c.getString(1), c.getString(2), c.getInt(4), Uri.parse(c.getString(5))); 
c.moveToNext(); 
} 

,你可能想的地方使用Item對象。在循環轉到下一個i值後,它看起來丟失了。

+0

是的,我已經添加new_item項目。 關於新的Item(),我可以將它更改爲null嗎? – Aprian

+0

可以請讓我知道我應該把Item()構造函數放在什麼位置? – Aprian

+0

現在看來問題就出現在item.add(new_item)了?在logcat上它表明了這條線。 – Aprian

1

您應該使用CursorAdapter來顯示你的Cursor的內容,然後將它綁定到你的ListViewsetListAdapter