0

これは私が作成した関数です。Playgolf テーブルには、列 id、holepar、ストローク、パットがあります。ストロークをまとめてみました。

コードをこれに編集したところ、このエラーが発生しました...何かアイデアはありますか?

public void DisplaySum(int sum)
{
    //Setup a local variable to store sum
    int intRoundsSUM = 0;
    db.open(); 
    //Setup your database cursor
    Cursor c = db.getPLAYGOLF();
    Toast.makeText(getBaseContext(), intRoundsSUM, Toast.LENGTH_LONG).show();

    //Iterate through the cursor
    //Sum up each value
   c.moveToFirst();
        while(c.isAfterLast() == false) {
            intRoundsSUM += c.getInt(2);
            c.moveToNext();
        }
    Toast.makeText(getBaseContext(), intRoundsSUM, Toast.LENGTH_LONG).show();
}
    // LOG CAT MAIN ERROR: 
    //E/AndroidRuntime(597): android.content.res.Resources$NotFoundException: String resource ID #0xa
4

4 に答える 4

1

カーソルを管理する必要があります。

cursor.moveToFirst();
while(cursor.isAfterLast() == false) {
    intRoundsSUM += c.getInt(2);
    cursor.moveToNext();
}

アクティビティでカーソルのライフサイクルを制御する方法についてもお読みください。activity.startManagingCursor(cursor);

于 2012-04-26T14:02:34.873 に答える
1

次のサイクルでカーソル行を反復処理できます。

while (cursor.moveToNext()) {
    intRoundsSUM += c.getInt(2);
}

ただし、データベースから「合計」を選択することもできます。このようなもの:

SELECT SUM(strokes_column) FROM golf_table

必要な合計を格納する 1 つの列と 1 つの行を含むテーブルが返されます。

于 2012-04-26T14:05:46.150 に答える
0

エラーを修正するc.moveToFirst()前に試してください。intRoundsSUM += c.getInt(2);

それらをすべてwhile (c.moveToNext())合計するには、SQLクエリで合計を使用または作成できます(これはより良い方法です)。http://www.w3schools.com/sql/sql_func_sum.aspを参照してください。

于 2012-04-26T14:13:18.533 に答える
-1

次の 2 つの理由が考えられます。

  1. プレイゴルフ テーブルは空です。を使ってサイズをチェックc.getCount();
  2. あなたはカーソルの終わりにいます。c.moveToFirst()カーソルの先頭に移動するために使用します。
于 2012-04-26T14:17:56.157 に答える