1

データベースに入力された値に応じて、Android アプリのテキストに色を付けようとしていSQLiteます。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

コードを次のように変更します。

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 に答える
0

arr[] にエントリが 1 つしかない可能性があります。デバッガーを使用して、ループが実際に実行される回数と配列の実際の長さを確認する必要があります。

編集:

テキストビューが 3 つしかないことに気付きました。もちろん、settext メソッドを呼び出すたびにテキストがリセットされるため、textview には最後のビューが表示されます。あなたがしようとしていることを行うにはいくつかの方法がありますが、アプリがどのように設定されているかわかりません。テキストビューを動的に作成し、それにテキストを設定してから、そのテキストビューを設定した線形レイアウトまたは相対レイアウトに追加してみてください。または、必要に応じて baseadapter またはその他のアダプターのカスタム実装を使用して、リストビュー内でこれを行うこともできます。

于 2013-02-26T20:19:30.650 に答える