Android: использование класса Spannable при динамическом добавлении текста?

Я пытаюсь изменить цвет определенного текста в своем TextView, и мне известно об использовании 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, обратите внимание, что обведенные области — это строки, которые я хочу выделить красным:

введите здесь описание изображения

ИЗМЕНИТЬ:

Метод 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;
    }

person codeme2020    schedule 11.08.2014    source источник


Ответы (1)


Просто измените 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);
person Barend    schedule 11.08.2014