2016-07-16 5 views
0

私は4つのEditTextでダイアログボックスを作成しました。しかし、今私はAPI応答JsonObjectの数に応じて動的にこれを行う必要があります。DialogBoxの内部でEdittextをプログラムで作成する方法は、配列のサイズに依存しますか?

は、ここに私の応答である: "additional_charges" は、持っている "1"、 "2"、 "3" --->私は3 EDITTEXTを表示する必要が

{ 
    "additional_charges":{ 
     "1":"121324324", 
     "2":"245657687", 
     "3":"379809733", 
     "4":"4467797894" 
    } 
} 

場合。

「additional_charges」に「1」、「2」、「3」、「4」がある場合--->ダイアログボックスに4 のEdittextを表示する必要があります。

どのようにするには? dialog.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/fare_id" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/white" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/currentlocTxt" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.2" 
     android:ellipsize="marquee" 
     android:fadingEdge="horizontal" 
     android:gravity="center" 
     android:lines="1" 
     android:marqueeRepeatLimit="marquee_forever" 
     android:padding="5dp" 
     android:scrollHorizontally="true" 
     android:singleLine="true" 
     android:text="@string/additionalcharge" 
     android:textColor="@color/button_accept" 
     android:textSize="15sp" /> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:layout_margin="5dp" 
     android:id="@+id/chargeType" 
     android:orientation="vertical" 
     android:padding="3dp" 
     android:weightSum="1"> 


    </LinearLayout> 

    <View 
     android:layout_width="match_parent" 
     android:layout_height="1dp" 
     android:layout_marginTop="@dimen/com_facebook_share_button_compound_drawable_padding" 
     android:background="@color/hintcolor" /> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:weightSum="1"> 

     <Button 
      android:id="@+id/cancelBut" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_gravity="right" 
      android:layout_weight="0.5" 
      android:background="@color/white" 
      android:text="Cancel" 
      android:textColor="@color/button_accept" /> 

     <View 
      android:layout_width="1dp" 
      android:layout_height="match_parent" 
      android:layout_marginTop="@dimen/com_facebook_share_button_compound_drawable_padding" 
      android:background="@color/hintcolor" /> 

     <Button 
      android:id="@+id/submitBut" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.5" 
      android:background="@color/white" 
      android:text="Submit" 
      android:textColor="@color/button_accept" /> 
    </LinearLayout> 
</LinearLayout> 

Dialog.class:まず

private void ShowDialog(final String completeUrl, Context context) { 
      if (NotificationAct.passenger_mobile != null) { 

       final View view = View.inflate(OngoingAct.this, R.layout.additional_charges, null); 
       cDialog = new Dialog(OngoingAct.this, R.style.dialogwinddow); 
       cDialog.setContentView(view); 
       cDialog.setCancelable(false); 
       cDialog.show(); 
       FontHelper.applyFont(OngoingAct.this, cDialog.findViewById(R.id.alert_id)); 

       LinearLayout linlay_container = (LinearLayout) findViewById(R.id.chargeType); 

       //length from json response 
       int arrayLength = 4; 
       EditText editText[] = new EditText[0]; 
       for (int i = 0; i < arrayLength; i++) { 
        editText[i] = new EditText(this); 
        editText[i].setBackgroundResource(R.color.white); 
        editText[i].setId(i); 
        linlay_container.addView(editText[i]); 
       } 

       final Button button_success = (Button) cDialog.findViewById(R.id.submitBut); 
       final Button button_failure = (Button) cDialog.findViewById(R.id.cancelBut); 
       button_failure.setVisibility(View.VISIBLE); 

       } 
} 
+0

すでに試した内容を示すコードを追加できますか?あなたのプログラムが現在どのようになっているかを理解せずに良い答えを出すのは難しいです。 –

答えて

1

、JSON応答を解析し、配列の長さを取得します。

次に、EditTextを追加するダイアログボックスにレイアウトコンテナを作成します。

次に、新しいEditTextオブジェクトを作成し、配列リストに従ってコンテナに追加することでforループを反復処理できます。

は、コードスニペットの表情、ここで

LinearLayout linlay_container=(LinearLayout)findViewById(R.id.linlay_container); 
    //length from json response 
    int arrayLength=?; 
    for (int i = 0; i <arrayLength ; i++) { 
     EditText editText=new EditText(this); 
     linlay_container.addView(editText); 
    } 

を持って、linlay_containerはあなたのEditTextを追加したいとにarrayLengthがあなたのJSONレスポンスからの配列サイズであるダイアログボックスのコンテナのレイアウトです。

+0

申し訳ありません....私はそれを取得していません。 –

+0

あなたがしなかった特定のエリアを教えてもらえますか? –

+0

あなたのコードを試しました。しかし、それは避けてください。後でこのコードを使用しました。確認してください –

関連する問題