Android:从数据库加载时在列表视图中显示HTML格式的文本
我有一个SQLite项目数据库,其中一些项目包含基本的HTML,如b和子标记。我已经使用SimpleCursorAdapter将表绑定到ListView。有没有办法使ListView格式化HTML标记,以便正确显示?Android:从数据库加载时在列表视图中显示HTML格式的文本,android,html,sqlite,textview,Android,Html,Sqlite,Textview,我有一个SQLite项目数据库,其中一些项目包含基本的HTML,如b和子标记。我已经使用SimpleCursorAdapter将表绑定到ListView。有没有办法使ListView格式化HTML标记,以便正确显示? 似乎前进的方向是让光标传递跨距字符串,但我不知道如何做到这一点。如果数据只包含简单的HTML标记,则它们实际上可以由TextView使用HTML.fromHtml(yourString)处理。该静态方法返回一个span,可由TextView显示,开销远小于WebView。谢谢Ian
似乎前进的方向是让光标传递跨距字符串,但我不知道如何做到这一点。如果数据只包含简单的HTML标记,则它们实际上可以由TextView使用HTML.fromHtml(yourString)处理。该静态方法返回一个span,可由TextView显示,开销远小于WebView。谢谢Ian,这是我最后的适配器代码:
private class HtmlCursorAdapter extends SimpleCursorAdapter {
public HtmlCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to) {
super(context, layout, c, from, to);
}
@Override
public void setViewText (TextView view, String text) {
view.setText(Html.fromHtml(text),BufferType.SPANNABLE);
}
}
您可以使用CursorWrapper类
CursorWrapper cw = new CursorWrapper(myCursor) {
public String getString(int columnIndex) {
String withHTML = super.getString(columnIndex);
return Html.fromHtml(withHTML).toString();
}
};
对不起,我不知道该把代码放在哪里。我尝试扩展TextView,但setText方法被设置为final。您不需要扩展TextView,只需将Html.fromHtml()返回的跨距传递给它,而不是传递光标返回的字符串。您可以扩展SimpleCursorAdapter并重写setViewText方法。这太棒了,谢谢!由于该构造函数现在在
SimpleCursorAdapter
中被弃用,我将签名更改为public HtmlCursorAdapter(上下文上下文、int布局、游标c、字符串[]from、int[]to、int标志)
和super
调用super(上下文、布局、c、from、to、标志)代码>