Android:动态添加文本时使用Spannable类?

时间:2014-08-11 17:27:04

标签: android sqlite textview spannablestring

我正在尝试更改TextView中某些文字的颜色,并且我知道使用this Question.中的Spannable class

我的问题是我的文本是作为SQLite数据库查询的返回值动态添加的。

我仍然可以使用Spannable,如果是,那么如何?

在TextView中设置文本的代码部分:

case R.id.btnAvgAttSearch:

            final String entry = avgEntered.getText().toString();
            // convert from string value to int
            int avgValToSearch = Integer.parseInt(entry); //

            // /setting results equal to return val of search
            results = db.getSpecificAverageAtt(avgValToSearch);


            tvResults.setText(listToString(results));

             }

            break;

TextView中的示例输出,请注意带圆圈的区域是我希望为红色的行:

enter image description here

修改

ListToString方法:

public static String listToString(List<?> list) {
        String result = "";
        for (int i = 0; i < list.size(); i++) {
            result += "" + list.get(i) + "\n\n";
        }
        return result;
    }

1 个答案:

答案 0 :(得分:0)

只需更改ListToSTring即可返回Spannable,例如:

public static Spannable listToString(List<?> list) {
    SpannableStringBuilder result = new SpannableStringBuilder();
    for (int i = 0; i < list.size(); i++) {
        result.append(list.get(i)).append("\n\n");
    }
    return result;
}

然后,您可以以编程方式将结果添加到结果中。

Spannable text = listToString(results);
text.setSpan( /*.. span goes here */ );
tvResults.setText(text);