如何在DialogBox内以编程方式创建Edittext取决于数组大小? [英] How to create Edittext programmatically inside of DialogBox depends on Array size?

查看:85
本文介绍了如何在DialogBox内以编程方式创建Edittext取决于数组大小?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用4个EditText创建了对话框.但是,现在我需要通过动态依赖于API响应JsonObject计数来做到这一点.

I have created Dialog Box with 4 EditText. But now I need to do this by dynamically depends on API response JsonObject count.

这是我的回复:

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

如果"additional_charges"具有"1","2","3" --->我必须显示3 编辑文字.

If "additional_charges", has "1","2","3" ---> I have to show 3 Edittext.

如果"additional_charges"具有"1","2","3","4" --->我必须显示4 对话框中的Edittext.

If "additional_charges", has "1","2","3","4" ---> I have to show 4 Edittext in Dialog box.

如何执行此操作? dialog.xml:

How to do this? 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:

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);

              }
}

推荐答案

首先,解析Json响应并获取数组的长度.

Firstly, parse the Json response and get the length of the array.

然后,在要添加EditText的对话框中创建一个布局容器.

Then, create a layout container in the Dialog box where you want to add the EditText's.

然后,您可以通过创建新的EditText对象并将其根据数组列表添加到容器中来遍历for循环.

Then, you can iterate through for loop by creating new EditText object and adding it to the container according to the array list.

看看代码片段,

 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响应的数组大小.

Here, linlay_container is the container layout of Dialog box in which you want to add EditText and arraylength is the array size from your json response.

这篇关于如何在DialogBox内以编程方式创建Edittext取决于数组大小?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆