2011-11-10 15 views
0

私はアンドロイドの初心者ですので、この質問が簡単な場合は私を許してください。Android、動的にビューを変更する、新しいコンポーネントを追加/削除する

基本的に私はJavaプロジェクトをAndroidに移植したいと考えています。私のJavaアプリケーションのビューコンポーネントは、モデルによって動的に変化します。つまり、表示されるモデルには、ビューに渡される列挙型に応じてn個のチェックボックスまたはn個のラジオボックスが必要になることがあります。

私のJavaディスプレイでは、コンポーネントを画面に追加するたびにn個の番号でネストされたループによって実現されます。

if (type == TYPE.CHECKBOXES){ 
for (int i = 0; i < n ; i++){ 
add(new JCheckBox()); 
}} 

これは、次のボタンが押される度に(タイプが変わるたびに)表示されるように処理されます。アンドロイドではどのように動的にコンポーネントを追加したり削除したりするか、それぞれのタイプごとに新しいビューを設定する必要がありますか?

感謝 サム

+1

あなたがやることはアンドロイドでも動作しますが、正しいアンドロイドコンポーネントを使用してください。あなたのメインビューのメインレイアウト(リニアレイアウトなど)にチェックボックスを追加してください。 – Warpzit

+0

合意:AndroidとSwingは、イベントリスニングフレームワークとレイアウト設定で非常に似ています。 Warzpitによって提案された最小限の変更は、Android上でうまくいくでしょう。 – Guillaume

答えて

1

はあなたがJPanelにあなたのコンポーネントを追加して、親またはルートレイアウトにあなたのJPanelを追加 (すなわちBorderLayoutFlowLayoutなど)特定のレイアウトを伴って含むJPanelを使用してレイアウトを管理します。

少し例(あなたが投稿して:)アンドロイドで

if (type == TYPE.CHECKBOXES){ 
    for (int i = 0; i < n ; i++){ 
      mayPanel.add(new JCheckBox()); 
    } 
} 

は、あなたが特定のサブクラス化されたレイアウト設計を持っているViewGroupを使用してレイアウトを管理する(すなわちLinearLayoutをずっとFlowLayoutとして、RelativeLayoutBorderLayoutを考慮することができるように)

あなただけJPanel

if (type == TYPE.CHECKBOXES){ 
    LinearLayout myPanel = new LinearLayout(this); 
    for (int i = 0; i < n ; i++){ 
      CheckBox chk=new CheckBox(this); 
      chk.setText("Hello"); 
      myPanel.addView(chk); 
    } 
    myRootPanel.addView(myPanel); 
} 
のようなこれらのレイアウトを使用することができます

ちょうど追加:JavaのComponentはAndroidのViewと呼ばれています。 Androidのコントロール(ButtonEditTextImageButtonImageViewなどのウィジェットとも呼ばれる)のほとんどはViewのサブクラスです。

関連する問題