2012-02-23 9 views
0

すべてのlistViewに数字を追加したいのですが、これらの数字はSQLiteからのものです。私はそれらを追加するためにループを使用し、私はそれらを得るためにカーソルを使用します。問題は、最後の1つを除いて、それらのうちの1つを削除するときです。forループは機能しません。私はカーソルのための関数 "isNull"があることを発見しました、私はそれを使用したいが、それは動作しません。Androidカーソルとリストビューについてのエラー

int itemNum=doListlist.getCount(); 
     for(int i = 0; i < itemNum; i++){ 
      if(cursor.isNull(i+1)==false){ 
       float num=Float.parseFloat(listsDbAdapter.fetchData(tableName, i+1).getString(3)); 
       float price=Float.parseFloat(listsDbAdapter.fetchData(tableName, i+1).getString(5)); 
       total+=num*price; 
      } 
      else { 
      itemNum++; 
      } 
     }  

いつもエラーがある理由がわかっている場合は、教えてください。

+0

カーソルを削除するとカーソルは無効になると思います。あなたが何をしようとしているのかを完全に理解しているかどうかわからないにもかかわらず、おそらくあなたは、ここでカーソルを正しく使う方法を見てみることができます:http://www.higherpass.com/Android/Tutorials/Accessing-Data- With-Android-Cursors/2/ – Tim

+0

私はちょうどそのIDがデータベースに存在しているか、削除されてnullになることを知りたい(nullになると思う)。 – user1032314

答えて

0

メモリ内のデータベーステーブルの一部を表すオブジェクトとしてCursorを理解できます(このメモリ表現はqueryメソッドのパラメータに従って構築されます)。したがって、Cursorは、列数(queryメソッドでこれらの列を定義する)とこの表の行数を持つ表です。

カーソルを使用すると、これらの行が順番に読み取られます。これらの行で列の値を操作します。

cursor.isNull(i+1)は、現在の行ではi+1とみなし、この列の値がnullであるかどうかを確認します。 あなたのforループは適切ではないと思います。カーソルの方法は、moveToNext()のカーソルを使用して移動する必要があります。

+0

完璧な答えをありがとう。私はそれがよく分かっていると思うし、もう一度試してみるだろう。 – user1032314

0

これを試してください。 ' int itemNum = doListlist.getCount(); if(cursor!= null){

 if (cursor.moveToFirst()) { 



    for(int i = 0; i < itemNum; i++){ 

      float num=Float.parseFloat(listsDbAdapter.fetchData(tableName, i+1).getString(3)); 
      float price=Float.parseFloat(listsDbAdapter.fetchData(tableName, i+1).getString(5)); 


cursor.moveToNext(); 
      } 
     } 
    } 

    cursor.close(); 
+0

お返事ありがとうございます。私はこの質問の真の理由を得ると思う。 – user1032314

関連する問題