如何在对话框中以编程方式创建编辑文本取决于数组大小



我创建了带有4个编辑文本的对话框。但是现在我需要通过动态依赖 API 响应 JsonObject 计数来执行此操作。

这是我的回应:

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

如果"additional_charges"有"1","2","3"--->我必须显示3 编辑文本。

如果"additional_charges"有"1","2","3","4"--->我必须显示4 在对话框中编辑文本。

怎么做?对话框.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>

对话框.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 响应并获取数组的长度。

然后,在对话框中创建一个布局容器,您要在其中添加编辑文本。

然后,您可以通过创建新的 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 响应中的数组大小。

最新更新