2011-01-30 24 views
3

これは簡単なことですが、カーソルから返されたデータをさまざまなビューに適用するすべての例が混乱しています。 私はrawqueryを実行し、返されたデータの各項目をfloat配列に入れたい(後でそれらを追加できるように)。私はこれに何を使用する必要がありますか? おかげSQLiteデータベースからアンドロイドの配列にデータを取得するにはどうすればいいですか?

+1

です。budgetInArrayを初期化するのを忘れましたか(おそらく、「numRows = incomeCursor.getCount()」行の直後にしたいと思いますか?) –

+0

はい、まさに問題でした。ちょうどそこにいました。-_-それを指摘してくれてありがとう) – Holly

答えて

9

あなたのデータベースを照会するときは、まだカーソルを持っていますが、あなたはカーソルを持ったら、あなたはこのように、アレイに必要な値を引き出し、それを反復処理することができます:

DbAdapter db = new DbAdapter(mContext); 
    int columnIndex = 3; // Whichever column your float is in. 
    db.open(); 
    Cursor cursor = db.getAllMyFloats(); 
    float[] myFloats = new float[cursor.getCount()-1]; 

    if (cursor.moveToFirst()) 
    {      
     for (int i = 0; i < cursor.getCount(); i++) 
     { 
      myFloats[i] = cursor.getFloat(columnIndex); 
      cursor.moveToNext(); 
     }   
    } 
    cursor.close(); 
    db.close(); 

    // Do what you want with myFloats[]. 
+0

ああ、邪悪なことありがとう!私が理解していない唯一のことは、columnIndexを使う必要があるということですか?私は方法を調べればわかるでしょう。私は実際のrawQueryがgetAllMyFloatsで正しく行われたと仮定します。これは本当に助かりました。 – Holly

+0

もう1つのことは、列は0または1のインデックスで開始されますか? – Holly

+1

複数の列を持つテーブルがある場合は、探している特定のデータフィールドを取得するために列インデックスが必要です。列のインデックスはゼロです。 –

3

float[] myFloats = new float[cursor.getCount()-1];で(int i = 0)、またはiが0から始まるため、1をマイナスしないでください。使用すると、Java.lang.IndexOutOfBoundsExceptionと表示されます。配列インデックスは[cursor.getCount()]まで、[cursor.getCount()-1]まででなければなりません。正しいことはfloat[] myFloats = new float[cursor.getCount()];

関連する問題