2

Html.fromHtmlを使用して(フィードXMLの)説明タグのコンテンツを取得していますが、正常に機能します

説明タグ:

<description><![CDATA[<div class="K2FeedIntroText"><p><img style="margin: 10px; float: left;" alt="block curta" src="http://loc.grupolusofona.pt/images/stories/destaques/block%20curta.jpg" height="110" width="120" />Quatro Horas Descalço é o nome da curta-metragem, realizada por Ico Costa, que se estreia mundialmente no 7.º Festival Internacional de Cinema de Roma, nos dias 12 e 13 de novembro, em competição no Cinema XXI.</p>

]]>

しかし、私がドキュメントを調べると、次のように書かれています。

Returns displayable styled text from the provided HTML string. Any <img> tags in the HTML will display as a generic replacement image which your program can then go through and replace with real images.

だから私の質問は、「あなたのプログラムが通過して実際の画像に置き換えることができる」と書かれていることをどのように行うことができるかということです。

パターンを使用してRegEx経由でimgurlを取得する方法を知っています。クラスを使用して、「通過して画像に置き換える」方法を知りたかっただけです。

よくわからない場合は、何か言ってください。

編集:

さて、私はこれを単純なrssリーダーで実装しようとしています(そしてコード的に可能な限り単純に保とうとしています)

私はDOMパーサーを使用しておりmap = HashMap<String, Spanned>、各子ノードの値をKEY:とともに格納するためにを使用しています。

map.put(KEY_DESC, Html.fromHtml(parser.getValue(e, KEY_DESC)));

回答のコメントで、新しいクラス(URLImageParser)を作成し、次のように使用しようとした便利なリンクを見つけました。

map.put(KEY_DESC, htmlSpan);

結果はどこhtmlSpanになりますか:

this.textView = (TextView)this.findViewById(R.id.textview);
URLImageParser p = new URLImageParser(textView, this);
Spanned htmlSpan = Html.fromHtml(html, p, null);
textView.setText(htmlSpan);

android:visibility="gone"また、 TextViewに値を格納する必要がある場合に備えて、TextViewを作成しました(おそらく私はそれを間違って解釈しました)

私の当初の考えは、それが私のHashMapにうまく収まるようなhtmlSpanタイプだったということでした。Spanned

ListViewにアップロードするために、私は次のSimpleAdapterようなものを使用しています。

    ListAdapter adapter = new SimpleAdapter(this, menuItems, R.layout.linhafeed, 
            new String[] { KEY_TITLE, KEY_DESC, KEY_PUBDATE, KEY_LINK },
            new int[] { R.id.title, R.id.desc, R.id.pub, R.id.link });

どこmenuItemsにありますかArrayList<HashMap<String,Spanned>>

ここで何か間違ったことはありますか?

4

1 に答える 1

3

Html.fromHtml(...)<img ... />タグをImageSpan特別な「オブジェクト置換文字」(\ uFFFC)に置き換えます。

実際の画像を表示するには、次の2つのオプションがあるようです。

  • ImageGetterとして表示する画像を返すを実装しますDrawable。正しく思い出せば、結果がすぐに返されることを期待しているため、画像の読み込みを別のスレッドにオフロードすることはできません。したがって、これはローカルリソース(および、スケーリング、トリミング、エフェクトの適用など、長時間実行される可能性のある操作が必要ない場合は、デバイスのローカルストレージ内のアセットでも十分です)で十分です。
  • 結果に対して2回目のパスを実行し、発生したSpannedものをすべて置き換えます\uFFFC。メソッドImageSpanを使用するすべてから画像のソース(URL)を取得できるはずです。getSource()残念ながら、一度ロードされたセッターを更新するセッターはないようです。そのため、コンストラクターにロードされたイメージを渡して、を新しいものDrawableに置き換える必要があると思います。ImageSpan

上記よりも少し重いかもしれない3番目の選択肢は、WebViewではなくを使用することTextViewです。そうすれば、ウィジェットに組み込まれているため、自分で読み込んだ画像を処理する必要がありません。

于 2012-11-07T01:18:00.270 に答える