1

我正在尝试根据输入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 循环时,它只打印出最新输入的值。

4

2 回答 2

0

看起来您的 arr[] 可能只有一个条目。您应该使用调试器来查看您的循环实际运行了多少次以及数组的实际长度是多少。

编辑:

我刚刚意识到你只有三个文本视图。当然,textview 会显示最后一个,因为每次调用 settext 方法都会重置文本。有几种方法可以做你正在尝试的事情,但我不确定你的应用程序是如何设置的。您应该尝试动态创建文本视图,为其设置文本,然后将该文本视图添加到您设置的线性布局或相对布局中。或者,您可以根据需要使用 baseadapter 或任何其他适配器的自定义实现在列表视图中执行此操作。

于 2013-02-26T20:19:30.650 回答
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));
    }

}
于 2013-11-27T12:10:56.143 回答