我正在尝试根据输入SQLite
数据库的值为我的Android应用程序着色文本。我已经设置了3 textviews
并且所有这些都有不同的文字颜色。
代码看起来像这样
String arr[] = data.split("..\n\n");
for(int i = 0; i < arr.length; i++)
{
System.out.println("arr["+i+"] = " + arr[i].trim());
if(arr[i].contains("High Severity"))
{
// String highArr = arr[i];
textView.setVisibility(View.VISIBLE);
textView.setText(highArr+"\n");
textView.setTextColor(Color.RED);
}
else if(arr[i].contains("Low Severity"))
{
textView3.setVisibility(View.VISIBLE);
textView3.setText(arr[i]+"\n");
textView3.setTextColor(Color.GREEN);
}
else if(arr[i].contains("Medium Severity"))
{
textView2.setVisibility(View.VISIBLE);
textView2.setText(arr[i]+"\n");
textView2.setTextColor(Color.rgb(255, 136, 0));
}
}
我已经解析了包含数据库表所有值的字符串,但是当我尝试使用for循环时,它只打印出最新输入的值。
答案 0 :(得分:0)
看起来你的arr []可能只有一个条目。您应该使用调试器来查看循环实际运行的次数以及数组的实际长度。
编辑:
我刚刚意识到你只有三个文本视图。当然textview正在显示最后一个,因为每次调用settext方法时它都会重置文本。有几种方法可以做你正在尝试的但我不确定你的应用程序是如何设置的。您应该尝试动态创建textview,将文本设置为它,然后将该textview添加到您已设置的linearlayout或relativelayout。或者您可以使用baseadapter的自定义实现或任何其他适配器在listview内执行此操作,具体取决于您的需要。
答案 1 :(得分:0)
我会改变我的代码:
String arr[] = data.split("..\n\n");
String Hseverity = "", Mseverity = "", Lseverity = "";
for(int i = 0; i < arr.length; i++)
{
System.out.println("arr["+i+"] = " + arr[i].trim());
if(arr[i].contains("High Severity"))
{
// String highArr = arr[i];
textView.setVisibility(View.VISIBLE);
Hseverity += arr[i] +"\n";
textView.setText(Hseverity);//do this to save each High Severity entry
//same for the other severity levels
textView.setTextColor(Color.RED);
}
else if(arr[i].contains("Low Severity"))
{
textView3.setVisibility(View.VISIBLE);
Lseverity += arr[i]+"\n";
textView3.setText(Lseverity);
textView3.setTextColor(Color.GREEN);
}
else if(arr[i].contains("Medium Severity"))
{
textView2.setVisibility(View.VISIBLE);
Mseverity += arr[i] + "\n";
textView2.setText(Mseverity);
textView2.setTextColor(Color.rgb(255, 136, 0));
}
}