我正在尝试显示一个信息列表,我想为ListView中的每个项目/行提供不同的背景颜色。我可以改变每一行的背景颜色,但不能改变每一行的颜色。我尝试使用多个非嵌套的if语句来设置背景颜色,但我不起作用。
public View getView(int position, View convertView, ViewGroup parent)
{
ViewGroup listItem;
if(convertView == null)
{
listItem = (ViewGroup) getLayoutInflator().inflate(R.layout.list_item, null);
}
else
{
listItem = (ViewGroup) convertView;
}
//listItem.setClickable(true);
//listItem.setOnClickListener(ViewBeerCL);
listItem.setTag(getParent());
String[] gradeInfo = gradeList.get(position).split(":");
TextView gradeTV = (TextView) listItem.findViewById(R.id.gradeTV);
TextView highGradeTV = (TextView) listItem.findViewById(R.id.highGradeTV);
TextView lowGradeTV = (TextView) listItem.findViewById(R.id.lowGradeTV);
String GradeLayoutStyle = gradeInfo[0];
String aStr = gradeList.get(position).substring(1, 1);
String bStr = "A";
gradeTV.setText(gradeInfo[0]);
highGradeTV.setText(gradeInfo[1]);
lowGradeTV.setText(gradeInfo[2]);
gradeTV.setBackgroundColor((gradeInfo[0] == bStr)? Color.TRANSPARENT:getResources().getColor(R.color.GradeA));
highGradeTV.setBackgroundColor((gradeInfo[0] == bStr)? Color.TRANSPARENT:getResources().getColor(R.color.GradeA));
lowGradeTV.setBackgroundColor((gradeInfo[0] == bStr)? Color.TRANSPARENT:getResources().getColor(R.color.GradeA));
if(gradeTV.getText() == bStr)
{
SetColor(gradeTV, highGradeTV, lowGradeTV, getResources().getColor(R.color.GradeA), gradeInfo, "A");
}
if(GradeLayoutStyle == "B")
{
SetColor(gradeTV, highGradeTV, lowGradeTV, getResources().getColor(R.color.GradeB), gradeInfo, "B");
}
if(GradeLayoutStyle == "C")
{
SetColor(gradeTV, highGradeTV, lowGradeTV, getResources().getColor(R.color.GradeC), gradeInfo, "C");
}
if(GradeLayoutStyle == "D")
{
SetColor(gradeTV, highGradeTV, lowGradeTV, getResources().getColor(R.color.GradeD), gradeInfo, "D");
}
if(GradeLayoutStyle == "F")
{
SetColor(gradeTV, highGradeTV, lowGradeTV, getResources().getColor(R.color.GradeF), gradeInfo, "F");
}
return listItem;
}
private void SetColor(TextView grade, TextView high, TextView low, int color, String[] gradeInfo, String letter)
{
grade.setBackgroundColor((gradeInfo[0] == letter)? Color.TRANSPARENT:color);
high.setBackgroundColor((gradeInfo[0] == letter)? Color.TRANSPARENT:color);
low.setBackgroundColor((gradeInfo[0] == letter)? Color.TRANSPARENT:color);
}
是的,这是为了完成家庭作业,我不是在寻找有人为我做这项工作,我正在寻找帮助/告诉我如何解决这个问题的人。如果有人能指出我正确的方向,或者让我知道这是否可能,那就太棒了!
谢谢,
肖恩
答案 0 :(得分:0)
需要使用string.eqals(otherString)进行字符串比较。 使用==将无法工作,因为它比较对象本身,而不是内容。