如何从数据库中获取特定文本

时间:2017-10-13 14:03:04

标签: android

我有一个外部数据库。我想 BOLD 一些特定的文字。例如,我有一列包含 Word 名称,另一列包含示例。每个单词都有一个例子,在每个例子中,都使用单词。

例如:word 害怕

例子是:女孩害怕她看到了什么。

我想要获取数据并在recylerview中显示示例中的粗体字。

我使用下面的代码来达到,但不起作用,特定文本不加粗。

String bolder = holder.title.getText().toString();

SpannableStringBuilder stringBuilder = new SpannableStringBuilder(bolder);
stringBuilder.setSpan(new android.text.style.StyleSpan(Typeface.BOLD), 0,
                holder.title.getText().toString().length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
Log.d("span",holder.title.getText().toString());

holder.example.setText(stringBuilder);
holder.example.setText(wordsList.getExample());

我知道,使用像 这样的html标签,我们可以加粗,但我的数据更多,我想使用Spannable。

2 个答案:

答案 0 :(得分:0)

试试这个。

<强> 1。使用setTypeface

holder.example.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));

2.使用getPaint

holder.example.getPaint().setFakeBoldText(true);

修改

String bolder = holder.title.getText().toString();
SpannableStringBuilder stringBuilder = new SpannableStringBuilder(bolder + wordsList.getExample());
StyleSpan span = new StyleSpan(Typeface.BOLD);
stringBuilder.setSpan(span, 0, bolder.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
Log.d("span", holder.title.getText().toString());
holder.example.setText(stringBuilder);

答案 1 :(得分:0)

首先,您的代码要加粗文字

  

holder.example.setText(StringBuilder的);

被下一行替换

  

holder.example.setText(wordsList.getExample());

因此,请从代码中删除最后一行。

如果您想知道要加粗的单词,那么您需要在从外部数据库获得的文本中找到该单词的位置,因此您需要使用spannable来加粗该单词。

例如:

    String wordToBold= "afraid"; // the word that you want to bold out

    String textFromDatabase = wordsList.getExample();
    SpannableStringBuilder stringBuilder = new SpannableStringBuilder(textFromDatabase);
    int startPosition= textFromDatabase.indexOf(wordToBold);
    if(startPosition!=-1){
           stringBuilder.setSpan(new android.text.style.StyleSpan(Typeface.BOLD), startPosition, startPosition + wordToBold.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
           holder.example.setText(stringBuilder);
    }
    else{
           holder.example.setText(wordsList.getExample());
    }

希望它会帮助你ツ