0

解決できない問題があります。

データベースにアイテムを追加するとき、ユーザーが空の行を見ることができないように、データベースからmy にデータを入力し、3 つの空白スペースである にlistView等しいアイテムを削除しようとします。これを行うためにメソッド load() が呼び出されます。私は取得し続けます。アイテムを見つけたようです (私は でテストしました) が、remove メソッドが呼び出されるとクラッシュします。" "listViewnullPointerExceptionSystem.out.println()

private void load() {       
    Cursor c=helper.getById(taskId);
    c.moveToFirst();                
    String[] temp = getArray(helper.getPart(c));

    ArrayAdapter<String> arrayAdapter =      
             new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, temp);
    lv.setAdapter(arrayAdapter); 

    int count = arrayAdapter.getCount();
    for (int i = 0; i < count; i++) {
        if (arrayAdapter.getItem(i).equals("   ")) {
            arrayAdapter.remove(arrayAdapter.getItem(i));
        }                    
    }

    arrayAdapter.notifyDataSetChanged();

    c.close();
}
4

1 に答える 1

1

ループで削除を行うと、リストが縮小するために発生します。

最初はサイズが 10 (インデックス 0 - 9) で、条件に一致する最初のアイテムを削除すると、実際のサイズは 9 に戻りますが、ループにはまだ「i < 10」があります。インデックス i = 9 にアクセスしようとすると、NullPointer Exception.

次のことを試してください。

        for (int i = 0; i < arrayAdapter.getCount(); i++) {
             if(arrayAdapter.getItem(i).equals("   ")) {
                 arrayAdapter.remove(arrayAdapter.getItem(i));
             }                   
         }

count変数をgetCount()ループ内に置き換えたことに注意してください。このようにすると、NullPointer Exception.

于 2012-12-04T15:10:49.947 に答える