2011-01-11 4 views
2

일부 SQLite 데이터베이스에 b 및 sub 태그와 같은 기본 HTML이 포함되어 있습니다. SimpleCursorAdapter를 사용하여 ListView에 테이블을 바인딩했습니다. HTML 태그를 올바르게 표시 할 수 있도록 ListView 형식을 지정하는 방법이 있습니까? SpannedString을 전달하기 위해 Cursor를 얻는 것이 앞으로의 방법처럼 보이지만 그렇게 할 수는 없습니다.Android : 데이터베이스에서로드 할 때 ListView에 HTML 형식의 텍스트 표시

답변

1

데이터에 간단한 HTML 태그 만 포함되어 있으면 실제로 Html.fromHtml (yourString)을 사용하여 TextView에서 처리 할 수 ​​있습니다. 이 정적 메서드는 WebView보다 훨씬 적은 오버 헤드로 TextView에서 표시 할 수있는 Spanned를 반환합니다.

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

죄송하지만이 코드를 어디에 넣을 수 있는지 잘 모르겠습니다. TextView를 확장하려고했지만 setText 메서드가 final로 설정되었습니다. – Kieran

+0

TextView를 확장 할 필요가 없습니다. Cursor의 String이 아닌 Html.fromHtml()이 반환 한 Spanned 만 전달하면됩니다. SimpleCursorAdapter를 확장하고 setViewText 메서드를 재정의 할 수 있습니다. –

3

감사 이안이 내 마지막 어댑터 코드입니다.

CursorWrapper cw = new CursorWrapper(myCursor) { 
    public String getString(int columnIndex) { 
     String withHTML = super.getString(columnIndex); 
     return Html.fromHtml(withHTML).toString(); 
    } 
}; 
+0

감사합니다. 그 생성자는 이제'SimpleCursorAdapter'에서 더 이상 사용되지 않으므로 서명을'public HtmlCursorAdapter (문맥 컨텍스트, int 배열, 커서 c, String [], int []에서 int flags)'로 변경하고'super' 호출을 super (context, layout, c, from, to, flags); – mjjohnson

1

당신은 CursorWrapper 클래스를 사용할 수 있습니다

관련 문제