2016-07-16 73 views
0

我已經創建了4個EditText的對話框。但現在我需要通過動態依賴API響應JsonObject計數來實現這一點。如何在DialogBox中以編程方式創建Edittext取決於數組大小?

這裏是我的迴應:

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

如果 「additional_charges」,有 「1」, 「2」, 「3」 ---「我必須展示3 EDITTEXT。

如果 「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

我試過你的代碼。但是沒有設置它。後來我用了這個代碼,請檢查一下 –

相關問題