对 TextView 的游标求和值
Summing Values from a Cursor for TextView
我正在尝试对两个游标的值求和并将结果放入文本视图中。当游标只返回一个值时,它工作得很好,但是当返回一个以上的值时,我不得不将游标放入一个 while 循环中,它停止工作。
主游标ingredientsCursor
returns 一个列表或成分(这是有效的),然后在 while 循环内,两个游标从主游标中获取结果进行携带出两个单独的查询,然后将结果相乘并添加到要显示的 运行ning 总计中。
当我 运行 没有 while 循环的代码知道我只会从 ingredientsCursor
中得到一个结果时,一切正常,当有不止一个结果时,我必须使用while 循环。我已经将总数设置为一个全局变量,认为这是问题的一部分,但仍然只是空白 space.
显示结果(无 While 循环)
final Cursor ingredientsCursor = adapter.getRecipesIngredients(recipeCode);
ingredientsCursor.moveToFirst();
String name = ingredientsCursor.getString(ingredientsCursor.getColumnIndex("ingredient_name"));
final Cursor c = adapter.getRecipeCalories(name);
c.moveToFirst();
int cal = c.getInt(c.getColumnIndex("calories"));
final Cursor m = adapter.getMeasurement(recipeCode, name);
m.moveToFirst();
int meas = m.getInt(m.getColumnIndex("measurement"));
int total = cal * meas;
recipeCalories.setText("Calories:" + total);
有While循环,显示空白
final Cursor ingredientsCursor = adapter.getRecipesIngredients(recipeCode);
ingredientsCursor.moveToFirst();
while(ingredientsCursor.moveToNext())
{
String name = ingredientsCursor.getString(ingredientsCursor.getColumnIndex("ingredient_name"));
final Cursor c = adapter.getRecipeCalories(name);
c.moveToFirst();
int cal = c.getInt(c.getColumnIndex("calories"));
final Cursor m = adapter.getMeasurement(recipeCode, name);
m.moveToFirst();
int meas = m.getInt(m.getColumnIndex("measurement"));
int MainActivity.total = cal * meas;
}
recipeCalories.setText("Calories:" + MainActivity.total);
每次运行 while 循环时,您都会覆盖 int MainActivity.total。
尝试将所有总值放入一个值列表中并显示其中的数据。
您覆盖每个循环步骤的总值。
final Cursor ingredientsCursor = adapter.getRecipesIngredients(recipeCode);
ingredientsCursor.moveToFirst();
while(ingredientsCursor.moveToNext())
{
String name = ingredientsCursor.getString(ingredientsCursor.getColumnIndex("ingredient_name"));
final Cursor c = adapter.getRecipeCalories(name);
c.moveToFirst();
int cal = c.getInt(c.getColumnIndex("calories"));
final Cursor m = adapter.getMeasurement(recipeCode, name);
m.moveToFirst();
int meas = m.getInt(m.getColumnIndex("measurement"));
// here is your error
int MainActivity.total = cal * meas;
}
您需要将代码更改为:
final Cursor ingredientsCursor = adapter.getRecipesIngredients(recipeCode);
ingredientsCursor.moveToFirst();
int sum = 0;
while(ingredientsCursor.moveToNext())
{
String name = ingredientsCursor.getString(ingredientsCursor.getColumnIndex("ingredient_name"));
final Cursor c = adapter.getRecipeCalories(name);
c.moveToFirst();
int cal = c.getInt(c.getColumnIndex("calories"));
final Cursor m = adapter.getMeasurement(recipeCode, name);
m.moveToFirst();
int meas = m.getInt(m.getColumnIndex("measurement"));
sum += (cal * meas);
}
recipeCalories.setText("Calories:" + sum);
我正在尝试对两个游标的值求和并将结果放入文本视图中。当游标只返回一个值时,它工作得很好,但是当返回一个以上的值时,我不得不将游标放入一个 while 循环中,它停止工作。
主游标ingredientsCursor
returns 一个列表或成分(这是有效的),然后在 while 循环内,两个游标从主游标中获取结果进行携带出两个单独的查询,然后将结果相乘并添加到要显示的 运行ning 总计中。
当我 运行 没有 while 循环的代码知道我只会从 ingredientsCursor
中得到一个结果时,一切正常,当有不止一个结果时,我必须使用while 循环。我已经将总数设置为一个全局变量,认为这是问题的一部分,但仍然只是空白 space.
显示结果(无 While 循环)
final Cursor ingredientsCursor = adapter.getRecipesIngredients(recipeCode);
ingredientsCursor.moveToFirst();
String name = ingredientsCursor.getString(ingredientsCursor.getColumnIndex("ingredient_name"));
final Cursor c = adapter.getRecipeCalories(name);
c.moveToFirst();
int cal = c.getInt(c.getColumnIndex("calories"));
final Cursor m = adapter.getMeasurement(recipeCode, name);
m.moveToFirst();
int meas = m.getInt(m.getColumnIndex("measurement"));
int total = cal * meas;
recipeCalories.setText("Calories:" + total);
有While循环,显示空白
final Cursor ingredientsCursor = adapter.getRecipesIngredients(recipeCode);
ingredientsCursor.moveToFirst();
while(ingredientsCursor.moveToNext())
{
String name = ingredientsCursor.getString(ingredientsCursor.getColumnIndex("ingredient_name"));
final Cursor c = adapter.getRecipeCalories(name);
c.moveToFirst();
int cal = c.getInt(c.getColumnIndex("calories"));
final Cursor m = adapter.getMeasurement(recipeCode, name);
m.moveToFirst();
int meas = m.getInt(m.getColumnIndex("measurement"));
int MainActivity.total = cal * meas;
}
recipeCalories.setText("Calories:" + MainActivity.total);
每次运行 while 循环时,您都会覆盖 int MainActivity.total。 尝试将所有总值放入一个值列表中并显示其中的数据。
您覆盖每个循环步骤的总值。
final Cursor ingredientsCursor = adapter.getRecipesIngredients(recipeCode);
ingredientsCursor.moveToFirst();
while(ingredientsCursor.moveToNext())
{
String name = ingredientsCursor.getString(ingredientsCursor.getColumnIndex("ingredient_name"));
final Cursor c = adapter.getRecipeCalories(name);
c.moveToFirst();
int cal = c.getInt(c.getColumnIndex("calories"));
final Cursor m = adapter.getMeasurement(recipeCode, name);
m.moveToFirst();
int meas = m.getInt(m.getColumnIndex("measurement"));
// here is your error
int MainActivity.total = cal * meas;
}
您需要将代码更改为:
final Cursor ingredientsCursor = adapter.getRecipesIngredients(recipeCode);
ingredientsCursor.moveToFirst();
int sum = 0;
while(ingredientsCursor.moveToNext())
{
String name = ingredientsCursor.getString(ingredientsCursor.getColumnIndex("ingredient_name"));
final Cursor c = adapter.getRecipeCalories(name);
c.moveToFirst();
int cal = c.getInt(c.getColumnIndex("calories"));
final Cursor m = adapter.getMeasurement(recipeCode, name);
m.moveToFirst();
int meas = m.getInt(m.getColumnIndex("measurement"));
sum += (cal * meas);
}
recipeCalories.setText("Calories:" + sum);