从数据SQLite填充多个TextView

时间:2015-02-24 22:36:25

标签: android sqlite textview

我有这个代码从db:

填充TextView
String ingredients = "";
    ArrayList<Map<String, Object>> recipeIngredients = db
            .getRecipeIngredients(recipeId);
    for (Map<String, Object> ingredient : recipeIngredients)
        ingredients += "\n"
                + ingredient.get(RECIPES_INGREDIENTS.ingredientNeed).toString() + " "
                + ingredient.get(RECIPES_INGREDIENTS.unit) + " "
                + ingredient.get(RECIPES_INGREDIENTS.ingredient).toString();
    ((TextView) findViewById(R.id.recipeIngredients)).setText(ingredients.substring(1));

效果很好,但问题在于,所有的成分和单位都显示在同一文本视图中,我无法获得代码来显示单独的文本视图中的成分和单位。

感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:0)

您应该动态创建文本视图,但只是为了让您开始并回答您的问题,如果您始终定义了静态数量的TextView,您可以采用以下方法。 关键是你需要分别引用布局xml中定义的每个TextView。

您需要为每个成分定义TextView,并为每个单元定义TextView(在这种情况下,总共有6个TextView,3个成分和3个单位)。

ArrayList<Map<String, Object>> recipeIngredients = db
        .getRecipeIngredients(recipeId);
int i = 0;
for (Map<String, Object> ingredient : recipeIngredients){

  String ingredients = ingredient.get(RECIPES_INGREDIENTS.ingredientNeed).toString()  + " "
            + ingredient.get(RECIPES_INGREDIENTS.ingredient).toString();
  String unit = ingredient.get(RECIPES_INGREDIENTS.unit);
  if (i == 0){
     ((TextView) findViewById(R.id.recipeIngredientsFirst)).setText(ingredients);
     ((TextView) findViewById(R.id.recipeUnitFirst)).setText(unit);

  }
  else if (i == 1){
     ((TextView) findViewById(R.id.recipeIngredientsSecond)).setText(ingredients);
     ((TextView) findViewById(R.id.recipeUnitSecond)).setText(unit);
  }
  else if (i == 2){
     ((TextView) findViewById(R.id.recipeIngredientsThird)).setText(ingredients);
     ((TextView) findViewById(R.id.recipeUnitThird)).setText(unit);
  }
  i++;
}

正如您可能看到的那样,它会很快变得混乱。 您可能在每个配方中都没有相同数量的成分,因此您不希望在布局xml中将布局设置为一成不变。

使用ListView和ListAdapter可能更好。 看看这个教程: http://www.vogella.com/tutorials/AndroidListView/article.html