首页 > 解决方案 > 从 API 响应动态创建 Edittext

问题描述

我正在for循环的线性布局中从API响应动态创建编辑文本并从api响应设置提示。现在我想要的是,对于两个我想要单个的字段,edittext应该为它们创建一个而不是单独的。我需要为线性布局设置一个条件,即如果一个带有 so n so 提示的编辑文本已经存在,则退出循环而不是创建/添加编辑文本。

有任何想法吗。这是我的代码。

对于type=1我想要 2 编辑文本应该创建 1 用于智能卡/客户关系和其他用于金额。

 API Response

     "listValidators": [
            {
                "inputType": 1,
                "lableName": "Smart Card Number",
                "message": "Smart Card Number starts with 4 or 1 and have only 11 digits",
                "productId": 1218,
                "regex": "^[4|1]{1}[0-9]{10}$"
            },
            {
                "inputType": 1,
                "lableName": "Amount",
                "message": "Amount must be between Rs.10 and Rs.10000",
                "productId": 1218,
                "regex": "^([0-9]{2,4})$|^10000$"
            },
            {
                "inputType": 1,
                "lableName": "Customer Relation Number",
                "message": "Customer Relation Number starts with 4 or 1 and have only 11 digits",
                "productId": 1218,
                "regex": "^[4|1]{1}[0-9]{10}$"
            },
            {
                "inputType": 10,
                "lableName": "Recharge Now",
                "message": "",
                "productId": 1218,
                "regex": ""
            }
        ]

    Java Code

    for(final Validators v : validators){
                    if(v.type == 1){ //inputType
                        // 1 editable text


                        if(vendorId==220){
                            EditText tv = new EditText(this);
                            //tv.setId(viewOffest++);

                            LinearLayout.LayoutParams tvLayoutParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
                            tvLayoutParams.setMargins(0,10,0,0);
                            tv.setLayoutParams(tvLayoutParams);

                            tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.dynamic_text_size_medium));
                            //tv.setHint("Enter " + v.text);
                            tv.setTextAppearance(this, R.style.parent_filled);
                            tv.setInputType(InputType.TYPE_CLASS_NUMBER);
                            if(v.regex.contains("a-z"))
                                tv.setInputType(InputType.TYPE_CLASS_TEXT);
                            d(LS, "adding inputype "+ v.type + " to view");
                            tv.setTag(R.string.tag_hint_validator, validators);
                            tv.setOnFocusChangeListener(hintListener);

    //flexisection is Linear layout here is confusion

                            if(flexiSection.getTag.equals("Smart Card Number")  
     ||flexiSection.getTag().equals("Customer Relation Number")){ 
                                break;
                            }
                            flexiSection.addView(tv);


                        }

                        else{

                            EditText tv = new EditText(this);
                            //tv.setId(viewOffest++);

                            LinearLayout.LayoutParams tvLayoutParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
                            tvLayoutParams.setMargins(0,10,0,0);
                            tv.setLayoutParams(tvLayoutParams);

                            tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.dynamic_text_size_medium));
                            tv.setHint("Enter " + v.text);
                            tv.setTextAppearance(this, R.style.parent_filled);
                            tv.setInputType(InputType.TYPE_CLASS_NUMBER);
                            if(v.regex.contains("a-z"))
                                tv.setInputType(InputType.TYPE_CLASS_TEXT);
                            d(LS, "adding inputype "+ v.type + " to view");
                            flexiSection.addView(tv);
                            tv.setTag(R.string.tag_hint_validator, validators);
                            tv.setOnFocusChangeListener(hintListener);
                        }

    Any responses will be appreciated. 

标签: javaandroidjsonapi

解决方案


推荐阅读