webView的使用及其亂碼問題的解決方案

鴨脖發表於2012-08-07

今天在做即時通訊的時候由於要把訊息文字的格式顯示出來,所以我採用了使用webView的方法。那麼由於SimpleAdapter無法自動把資料繫結在webView上所以我需要自己定義Adapter,難點也就在這裡。我在這裡把自己的adapter貼出來:

/**
* 自定義List的Adapter
*/
class RecordAdapter extends BaseAdapter{
private Context context;
private ArrayList<HashMap<String,Object>>  listitem;
public RecordAdapter(Context context,ArrayList<HashMap<String, Object>> listitem){
this.context = context;
this.listitem = listitem;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return listItem.size();
}


@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return listItem.get(arg0);
}


@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}


@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
// TODO Auto-generated method stub
//取出資料
String content = listitem.get(arg0).get("content").toString();
String time = listitem.get(arg0).get("time").toString();
View tem;
if(arg1 == null){
RelativeLayout temRl = (RelativeLayout)View.inflate(context, R.layout.talkrecorditem, null);
WebView wView = (WebView)temRl.findViewById(R.id.itemcontent);
wView.getSettings().setDefaultTextEncodingName("utf-8");  
TextView tView = (TextView)temRl.findViewById(R.id.itemtime);

wView.loadData(content, "text/html", null);
tView.setText(time);
tem = temRl;
}else{
tem = arg1;
WebView wView = (WebView)tem.findViewById(R.id.itemcontent);
TextView tView = (TextView)tem.findViewById(R.id.itemtime);
wView.loadData(content, "text/html", null);
tView.setText(time);
}
return tem;
}


WebView的預設編碼是“Latin-1” 所以這樣在顯示中文的時候會出現亂碼的現象。所以需要對webVIew的預設編碼進行設定,

wView.getSettings().setDefaultTextEncodingName("utf-8");  

其實這句話的作用就相當於網頁的元資訊,相當與一個meta。

相關文章