如何更改列表中特定单词的颜色?

时间:2014-04-13 15:51:50

标签: android

我有一个文本文件,在文件中,文字是逐行排列的......

苹果很甜蜜。

汽车的颜色是红色。

天空是蓝色的.. 我在汽车或苹果等文件中搜索单词 我正在使用以下代码阅读和搜索文件 {

private void initializeData(){

    listenglish = populateFromFile("eng_translation.txt");


@SuppressLint("DefaultLocale")
private List<String> populateFromFile(String fName) {

     // ArrayList<String> result = new ArrayList<String>();

    try {
        InputStreamReader reader = new InputStreamReader(getAssets().open(
                fName), "UTF-8");
        BufferedReader buffreader = new BufferedReader(reader);

        if (reader != null) {
            String line;
            while ((line = buffreader.readLine()) != null) {
                //lstTemp.add(line);
                if (line.toLowerCase().contains(word.toLowerCase())){
                    listenglish.add(line);
                    count++;
                }
            }
            line = null;
            System.gc();
            buffreader.close();
            reader.close();
        }


    } catch (Exception e) {
        System.out.println(e);

    }
    return listenglish;

}

}

现在我希望我在文件中搜索的单词在列表中有不同的颜色我是怎么做的

1 个答案:

答案 0 :(得分:0)

您不能在普通的String对象上执行此操作。这必须在Adapter的getView中处理。做这样的事情的方法可能如下:

    public void setColorForWordInTextView(int color, String word, TextView tv) {
        String str = tv.getText().toString();
        Spannable span = new SpannableString(tv.getText());

        span.setSpan(new ForegroundColorSpan(color), str.indexOf(word), str.indexOf(word) + word.length(),
                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        tv.setText(span);
    }

然后你可以用它:

setColorForWordInTextView(Color.RED, word, tv);