Ошибка получения данных описания для Android RSS-ридера

Я разрабатываю программу для чтения rss для Android, но проблема, с которой я сталкиваюсь, заключается в попытке получить данные из rss-каналов, где описание содержит html-контент, например:

<item>
    <title>Katima&#45;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&#45;Cloutier</dc:creator>
    <dc:date>2012-07-31T00:20:54+00:00</dc:date>
</item>

Я показываю содержимое в текстовом представлении, которое отображает содержимое как есть с тегами html!

Как я могу отобразить его в удобочитаемом виде с полосой прокрутки внутри определенной области

Спасибо

вот часть кода, который я использую:

@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;
    }

а также

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

}

Еще раз спасибо, любая помощь будет очень признательна!


person Moe    schedule 31.07.2012    source источник


Ответы (1)


Когда вы устанавливаете текст, установите его как текст из html:

tvdesc.setText(Html.fromHtml(desc));

Если вы хотите показывать изображения из html, вам нужно использовать WebView с чем-то вроде этих строк:

myWebview.loadData(myHtmlString, "text/html; charset=UTF-8", null);
person Nick    schedule 31.07.2012
comment
Большое спасибо, это решило удалить HTML-теги, но как насчет изображений внутри описания? может ли текстовое представление отображать изображение, или я должен использовать что-то другое, кроме элемента текстового представления, для отображения содержимого канала? Спасибо - person Moe; 01.08.2012
comment
Я обновил свой ответ выше, чтобы ответить на ваши вопросы. Надеюсь, поможет! - person Nick; 01.08.2012
comment
Я попробую ваше предложение для веб-просмотра и вернусь с результатами. Знаете ли вы приложение пульс? Я хочу отобразить статью таким же образом, чтобы показать ссылки и мультимедиа, такие как изображения и видео. Используют ли они веб-просмотр, как вы предложили? Спасибо - person Moe; 01.08.2012
comment
Скорее всего, они анализируют тег изображения, а также удаляют любой html, а затем просто отображают изображение в представлении изображения и текст в текстовом представлении. Трудно сказать наверняка, так как я не видел их исходный код :) - person Nick; 01.08.2012