2011-01-11 67 views
2

我有一个项目的SQLite数据库,其中一些包含基本HTML,如b和子标签。我已经使用SimpleCursorAdapter将表绑定到ListView。有没有办法让ListView格式成为HTML标签,以便正确显示? 看来前进的道路是让Cursor提供SpannedStrings,但我无法解决如何做到这一点。Android:从数据库加载时在ListView中显示HTML格式的文本

回答

1

如果您的数据仅包含简单的HTML标记,那么它们实际上可以通过使用Html.fromHtml(yourString)由TextView处理。该静态方法返回一个Spanned,它可以通过一个TextView显示,其开销远远小于WebView。

+0

对不起,但我不知道我可以把这段代码放在哪里。我试图扩展TextView,但setText方法设置为final。 – Kieran 2011-01-12 03:28:16

+0

您不需要扩展TextView,只需将其传递给Html.fromHtml()返回的Spanned而不是来自Cursor的String。您可以扩展SimpleCursorAdapter并覆盖setViewText方法。 – 2011-01-12 07:28:21

3

感谢伊恩,这是我最后的衔接代码:

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); 
    } 
} 
1

你可以使用CursorWrapper类。

CursorWrapper cw = new CursorWrapper(myCursor) { 
    public String getString(int columnIndex) { 
     String withHTML = super.getString(columnIndex); 
     return Html.fromHtml(withHTML).toString(); 
    } 
}; 
相关问题