java - 从 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.
解决方案
推荐阅读
- vb.net - 如何通过单元格单击事件以另一种形式显示数据网格视图行值,而不将 show 方法放在单元格单击事件中
- arrays - TableViewCell 删除然后所有复选标记迅速消失
- java - 如何在 Activity 中运行 Fragment?
- nsis - 如何使用本地文件夹中的 NSIS 脚本添加新页面以创建安装程序,而不是从程序文件 /NSIS 中获取它
- android - React Native Android Unable to resolve all files 错误
- shopify - 如何访问或创建 Shopify Storefront 令牌 [403 Forbidden]?
- javascript - Socket.io / Node.js:无法运行 > 节点 server.js
- javascript - 重复 XML 元素在 Internet Explorer 中不起作用
- android - Android 更新标签内容
- maven - 如何使用 maven 仅重建 Apache Flink 中的更改