2012-05-01 3 views
1

私はいくつかのウェブ開発経験を持ち、アンドロイドアプリを構築する方法を学んでいます。ウェブ/アンドロイドの類推:宣言的なものとプログラムによるレイアウト

私は、XMLレイアウトによってプログラムロジックと(UI-)レイアウトを分離できることを理解しています。これは、HTML/CSSからのJavaScriptの分離に似ているようです。

しかし、サーバー側のスクリプト言語の役割は何ですか?つまり、ユーザーが再生するためにクリックできるオーディオファイルのリストがある場合、どのようにXMLレイアウトを自動生成するのですか(Web世界では、HTMLとPHPをインターリーブしていました)。あるいは私はプログラムでこれを強制するのですか?

答えて

2

クライアントは物理的にサーバーから分離されているため、動的クライアント対話のためのjavascriptと、データを処理するためのサーバー側言語が必要です。 Androidの世界では、ビューとコードの両方が同じデバイス(デスクトップアプリのような)で実行されているため、ビューにスクリプトを書く必要はありません。このため、Androidのxmlレイアウトは、単純なHTMLファイルのように完全に静的なレイアウト定義です。ユーザーがそのレイアウトとやり取りするときに起こることは、このレイアウトを使用しているアクティビティのコードで定義する必要があります。このレイアウトは、ユーザーイベント(javascript)を処理し、それらを処理します(サーバー側言語)。

例を使用して、オーディオファイルのリストがあり、スピナーを使用してユーザーが選択できると仮定した場合、onClickListenerまたはバリアントを使用してアプリケーションに通知するイベントハンドラーを接続する必要がありますユーザーがそれを選択したときの処理。 ListViewを使用する場合は、通常、ListActivityを拡張してから、ユーザーがクリックしたときに実行されるアクションに対してonListItemClick()をオーバーライドします。

ウェブプログラミングの世界では、これはページ上の要素にjavascriptイベントハンドラを付けることに似ています。ユーザーがアクションを実行したときに応答し、通常は後で処理するためにデータをサーバーに送信します。

要するに、ユーザーの操作に応答するコードを作成する必要があり、レイアウトファイルにコードをインターリーブ(スクリプト)することはできません。

通常の流れは次のようになります。 1.あなたは 3. Rオブジェクトを使用しているレイアウトを示すために、あなたの活動でのonCreateでXML 2.使用setContentViewでレイアウトを定義する要素は、レイアウトで定義されている取得しますby ID by findViewById 4.ユーザーがアクションを実行したときに応答するために、これらの要素にイベントハンドラをアタッチします。

0

おそらくリストビューを使用したいオーディオファイルのリストです。 XMLレイアウトでListViewを宣言し、アクティビティ内でListViewでハンドルを取得し、そのリストにファイルのリストを埋め込むアダプタを設定します。つまり、XMLとプログラムによるレイアウトです。必要に応じて、いつでも両方を行うことができます(レイアウトにプログラムで追加することができます)。

関連する問題