我有这个代码从db:
填充TextViewString 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));
效果很好,但问题在于,所有的成分和单位都显示在同一文本视图中,我无法获得代码来显示单独的文本视图中的成分和单位。
感谢任何帮助。
由于
答案 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