2010-12-07 4 views
2

XMLファイルをXSLT経由でAndroidレイアウトXMLに変換しようとしています。今まで私はこれを有効にして、有効なXMLを返しています。この出力をsetContentViewを介して表示したい(またはこれが不可能な場合は、ViewFlipperにビューを追加したいと思っています)これまでのところ私は成功しておらず、このトピックに関する情報も見つけられません。setContentViewを通して変数からXMLを表示できますか?

これは私のコードです:

Source xmlSource = new StreamSource(projectFile); //a XML file on the SD card 
Source xsltSource = new StreamSource(getResources().openRawResource(R.raw.session)); 
TransformerFactory transFact = TransformerFactory.newInstance(); 
Transformer trans = transFact.newTransformer(xsltSource); 

OutputStream output = new StringOutputStream(); 
StreamResult result = new StreamResult(output); 
trans.transform(xmlSource, result); 

output.toString()は、文字列の形式に変換されたXMLを返します。これまでのところ、すべてが動作しますが、どのように私は私のレイアウトで、このXMLを使用することができます 私は次のことを試してみました!?アプローチ:

setContentView(output); 

と:

projectFlipper = (ViewFlipper)findViewById(R.id.projectFlipper); 
projectFlipper.addView(output); 

私は変数をキャストしようとしましたが、今はかなり長続きしています。私は何を見落としていますか?またはこれを行う方法はありませんか?

ありがとうございます!

答えて

1

実際、ビューはXMLファイルでLayoutInflaterを使用して作成されます。しかし、このクラスのjavadocの言ったように:

重要

:パフォーマンス上の理由から、インフレがビルド時に が行われているXMLファイルの前処理に大きく依存している を表示します。したがって、 実行時に LayoutInflaterとXmlPullParser をプレーンXMLファイルで使用することは現時点では不可能です。

このように、XMLファイルを動的に使用して新しいビューを作成することは不可能です。しかし、画面をプログラム的に作成するためには、 "変換"ロジックを翻訳することができます。

+0

ありがとう、それを行う! – PtjZ

1

これはできません。すべてのリソースがコンパイルされ、プロジェクトapkに追加されます。あなたができることは、手動でXMLを解析し、実行時にビューを作成することです。

+0

[OK]を感謝を!あなたはこれについて何か経験がありますか?私は大きな文書500 +ラインを解析する必要があります、これを行うための最善の方法は何ですか? DOM、SAXまたはpullparser? – PtjZ

+0

SAXは常にその性能のために第一の選択です。しかし、このケースでは、適切に入れ子になったビューを知る必要があるので、DOMは私が推測するより良いでしょう。 – Varun

+0

お返事ありがとうございます! – PtjZ

関連する問題