2011-01-11 4 views
2

一部のデータベースにbタグやsubタグなどの基本HTMLが含まれているSQLiteデータベースがあります。 SimpleCursorAdapterを使用してテーブルをListViewにバインドしました。 ListViewのHTMLタグを正しく表示するようにする方法はありますか? SpannedStringを提供するためにCursorを取得する方法があるようですが、その方法を理解することはできません。Android:データベースから読み込んだときにListViewにHTML形式のテキストを表示

答えて

1

データに単純なHTMLタグしか含まれていない場合は、実際にはHtml.fromHtml(yourString)を使用してTextViewで処理できます。その静的メソッドはSpannedを返します。これは、WebViewよりはるかに少ないオーバーヘッドでTextViewで表示できます。

+0

申し訳ありませんが、私はこのコードをどこに置くことができますかわかりません。 TextViewを拡張しようとしましたが、setTextメソッドはfinalとして設定されています。 – Kieran

+0

TextViewを拡張する必要はありません.CursorのStringではなくHtml.fromHtml()によって返されたSpannedに渡すだけです。 SimpleCursorAdapterを拡張してsetViewTextメソッドをオーバーライドすることができます。 –

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); 
    } 
} 
+0

これはすばらしいです、ありがとう!このコンストラクタは 'SimpleCursorAdapter'で廃止されたので、署名を' public HtmlCursorAdapter(コンテキストコンテキスト、intレイアウト、カーソルc、String []からint []、intフラグ) 'に変更し、' super'呼び出しを'super(コンテキスト、レイアウト、c、from、to、flags);' – mjjohnson

1

あなたはCursorWrapperクラスを使用することができます。

CursorWrapper cw = new CursorWrapper(myCursor) { 
    public String getString(int columnIndex) { 
     String withHTML = super.getString(columnIndex); 
     return Html.fromHtml(withHTML).toString(); 
    } 
}; 
関連する問題