0

履歴リストビューでいくつかの問題が発生しました。logcat では、問題の原因は new_item であると述べています。

これは私のコードです

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();
}

アイテムは私が作成したクラスです。これが 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 つの列があり、string、string、string、int、string (Uri を格納するため) を取ります。

助けてくれてありがとう。

edit : リスト項目に new_item を追加

4

2 に答える 2

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値に移動した後に失われたようです。

于 2012-06-28T02:15:00.160 に答える
1

a を使用しCursorAdapterて のコンテンツを表示し、それをwithCursorにバインドする必要があります。ListViewsetListAdapter

于 2012-06-28T02:30:16.227 に答える