问题
I am developing an android rss reader but the problem i am facing is when trying to fetch data from rss feeds where description contain html content like the following:
<item>
<title>Katima-Comic</title>
<link>http://thelinknewspaper.ca/article/3063</link>
<guid isPermaLink="false">thelink_entry_3063</guid>
<description><![CDATA[
<img alt="" width="690" height="407" src="http://thelinknewspaper.ca/images/cache/c11f5084728aa602d09cd15bb20ae7a86b06be79.jpg" />
</p>
<p>This is the story of Andrew Murchison, a Katimavik volunteer whose life was changed by the federal youth program.</p>
<p><iframe class="scribd_iframe_embed" src="http://www.scribd.com/embeds/101595075/content?start_page=1&view_mode=list&access_key=key-1ss1qrvm5hi9h7othhkq" data-auto-height="true" data-aspect-ratio="0.777636594663278" scrolling="no" id="doc_79691" width="100%" height="600" frameborder="0"></iframe></p>
]]></description>
<dc:creator>Paku Daoust-Cloutier</dc:creator>
<dc:date>2012-07-31T00:20:54+00:00</dc:date>
</item>
I am displaying the content in a textview which displays the content as is with the html tags!
How can i display it in a good readable way with a scroll bar inside a specific area
thanks
here's a portion of the code i am using:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
ViewHolder holder;
if (view == null) {
LayoutInflater inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.row, null);
holder = new ViewHolder();
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
if ((items == null) || ((position + 1) > items.size()))
return view;
objBean = items.get(position);
holder.title = (TextView) view.findViewById(R.id.txttitle);
holder.description = (TextView) view.findViewById(R.id.txtdesc);
if (holder.title != null && null != objBean.getTitle()
&& objBean.getTitle().trim().length() > 0) {
holder.title.setText(Html.fromHtml(objBean.getTitle()));
}
if (holder.description != null && null != objBean.getDescription()
&& objBean.getDescription().trim().length() > 0) {
holder.description.setText(Html.fromHtml(objBean.getDescription()));
}
// Even and odd Row...
if ((position % 2) == 0) {
view.setBackgroundResource(R.drawable.bg_list_even);
} else {
view.setBackgroundResource(R.drawable.bg_list_odd);
}
return view;
}
and
public class NewsDetail extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.detail);
Bundle b = this.getIntent().getExtras();
String title = b.getString("title");
String desc = b.getString("description");
final String link = b.getString("link");
TextView tvtitle = (TextView) findViewById(R.id.tvtitle);
TextView tvdesc = (TextView) findViewById(R.id.tvdesc);
Button btnWeb = (Button) findViewById(R.id.btngotolink);
btnWeb.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(link)));
}
});
tvtitle.setText(title);
tvdesc.setText(desc);
setTitle(title);
}
}
Thank again any help would be really appreciated!!
回答1:
When you set the text, set it as text from html:
tvdesc.setText(Html.fromHtml(desc));
If you want to show images from the html you'll need to use a WebView with something along these lines:
myWebview.loadData(myHtmlString, "text/html; charset=UTF-8", null);
来源:https://stackoverflow.com/questions/11747702/android-rss-reader-description-data-fetching-error