1

いくつかのモバイル テクノロジを評価する必要があり、1 つの質問があります。

ウェブアプリがあります。独自の形式のビューでサーバーからxmlを取得するのは、クライアント上のjavascriptです。アプリはそれを変換し、html を表示します。

Android でネイティブにしたい - 私たちのアプリは http 経由で webservice からこれらの xml を取得し (フォーマットを変更することができます)、ビューを作成します。

それは実行可能ですか?十分な方法で実行可能ですか?

Java といくつかの xml 形式でレイアウトを作成できることを知っています。これらの xml を Web から動的にロードして、それらを使用してレイアウトを膨らませることはできますか (チュートリアルでは、これらの xml はリソースのみにあります)。または、xml を解析して適切な Java メソッドを呼び出す必要があります。そのソリューションは効率的でしょうか?

4

1 に答える 1

2

リソースのレイアウト フォルダー内の XML はコンパイル時に変換されるため、事後にロードしても役に立ちません。

XML を動的に解析し、XML からプログラムでレイアウトを構築することもできます。独自の形式を変換するために既に必要な Android バージョンの JavaScript を使用するだけで済む可能性がありますが、それは形式によって異なります。

速度の点ではそれほど効率的ではありません (その多くはネットワークとキャッシュのコードに依存しますが、それでもビューの構築コードに少し依存します)。アプリの新しいバージョンをリリースします。

いくつかのコードを編集、拡張、および追加しました。

任意のレイアウト リソース xml ファイルを別のビューに挿入できるビューに膨張させることができます。選択した場合は、LayoutInflaterを見てビューを膨張させてから、ViewGroup 拡張ビュー (LinearLayout や RelativeLayout など) を使用して追加します。 .

コードの簡単な例:

 protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    LinearLayout ll = new LinearLayout(this);
    setContentView(ll);
    TextView tv = new TextView(this);
    tv.setText("A message");
    ll.addView(tv);
}

扱いにくく、多くのフォーマットが欠落していますが、あるビューを別のビューに追加するための基本的なメカニズムを提供します。

そして、レイアウト インフレータの使用例として:

View convertView = LayoutInflater.from(Main.this).inflate(R.layout.account_entry, null, false);

後で特定のビューに追加するので、最後の 2 つのパラメーターとして null と false を使用することをお勧めします。

于 2012-05-23T09:29:48.097 に答える