Android textview显示html数据:不显示Listactivity的图像
我想用textview显示html数据。因此我使用Android textview显示html数据:不显示Listactivity的图像,android,image,android-listview,textview,Android,Image,Android Listview,Textview,我想用textview显示html数据。因此我使用Html.fromHTML()方法。 除图像外,所有HTML数据都显示正确。这些图像只是在一个小数据框中显示了一个“OBJ”。我想不出这个问题 我的代码可能会更清楚地表达我的问题: public class MyActivity extends ListActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(save
Html.fromHTML()
方法。
除图像外,所有HTML数据都显示正确。这些图像只是在一个小数据框中显示了一个“OBJ”。我想不出这个问题
我的代码可能会更清楚地表达我的问题:
public class MyActivity extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
fetchData();
}
private void fetchData() {
new fetchDataTask().execute();
}
private class fetchDataTask extends AsyncTask<Void, Integer, ArrayList<Map<String, CharSequence>>> {
@Override
protected void onPostExecute(ArrayList<Map<String, CharSequence>> result) {
// set adapter
String[] from = { "title", "content" };
int[] to = { R.id.title, R.id.content };
SimpleAdapter adapter = new SimpleAdapter(MyActivity.this,
result, R.layout.detail_item, from, to);
setListAdapter(adapter);
}
@Override
protected ArrayList<Map<String, CharSequence>> doInBackground(Void... params) {
ArrayList<Map<String, CharSequence>> contentList = new ArrayList<Map<String, CharSequence>>();
try {
String dataid = getIntent().getExtras().getString("dataid");
// fetch json data from webapi
String result = MyUtil.fetchJsonData("http://www.mywebsite.com/datacontent" + dataid);
JSONObject data = new JSONObject(result);
JSONArray contentJArray = data.getJSONArray("content");
for (int i = 0; i < contentJArray.length(); i++) {
JSONObject oneObject = contentJArray.getJSONObject(i);
Map<String, CharSequence> map = new HashMap<String, CharSequence>();
map.put("id", oneObject.getString("id"));
map.put("title", oneObject.getString("title"));
// process content which is html format
// the content is a html format data as following:
// hello world, <img src="www.mysite.com/hello.jpg">.<br/>
ImageGetter imageGetter = new ImageGetter() {
@Override
public Drawable getDrawable(String source) {
Drawable d = null;
try {
InputStream is = (InputStream) new URL(source)
.getContent();
d = Drawable.createFromStream(is, "src");
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
return d;
}
};
CharSequence content = Html.fromHtml(
oneObject.getString("content"), imageGetter, null);
map.put("content", content);
contentList.add(map);
}
} catch (JSONException e) {
e.printStackTrace();
}
return contentList;
}
}
公共类MyActivity扩展了ListActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
fetchData();
}
私有void fetchData(){
新建fetchDataTask().execute();
}
私有类fetchDataTask扩展了AsyncTask{
@凌驾
受保护的void onPostExecute(ArrayList结果){
//设置适配器
字符串[]from={“title”,“content”};
int[]to={R.id.title,R.id.content};
SimpleAdapter=新SimpleAdapter(MyActivity.this,
结果,R.layout.detail_项目,从,到);
setListAdapter(适配器);
}
@凌驾
受保护的ArrayList doInBackground(无效…参数){
ArrayList contentList=新的ArrayList();
试一试{
字符串dataid=getIntent().getExtras().getString(“dataid”);
//从webapi获取json数据
字符串结果=MyUtil.fetchJsonData(“http://www.mywebsite.com/datacontent“+dataid);
JSONObject数据=新JSONObject(结果);
JSONArray contentJArray=data.getJSONArray(“内容”);
for(int i=0;i
ImageGetter ImageGetter=新ImageGetter(){
@凌驾
公共可绘制getDrawable(字符串源){
可提取d=null;
试一试{
InputStream为=(InputStream)新URL(源)
.getContent();
d=可绘制的.createFromStream(是“src”);
}捕获(格式错误){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
d、 setBounds(0,0,d.getIntrinsicWidth(),d.getIntrinsicHeight());
返回d;
}
};
CharSequence content=Html.fromHtml(
getString(“内容”),imageGetter,null);
地图。放置(“内容”,内容);
contentList.add(map);
}
}捕获(JSONException e){
e、 printStackTrace();
}
返回内容列表;
}
}
}
使用
Html.fromHTML()
时,Html中的任何标记都将显示为通用替换图像,您的程序可以通过该图像替换为真实图像
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:padding="10dp"
android:textSize="16sp" >
</TextView>
<TextView
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:padding="10dp"
android:textSize="16sp" >
</TextView>
</LinearLayout>