我有一个网络服务,根据该网络服务,我可以获得姓名、电子邮件等数据。并且数据会根据网络服务而变化。即有些网络服务可能只有两个字段,有些可能有 3 个字段。所以我的问题是如何根据网络服务动态添加 EditText 字段?
问问题
69 次
2 回答
0
我将解决此问题的方法是使用具有最大字段数的布局。因此,如果有 3 个,您只需查看 Web 服务返回的内容并根据需要更改字段的可见性。
您可以使用该类的setVisibility(int)方法来执行此操作View
。
于 2013-10-17T13:55:42.727 回答
0
您可以有一个类来存储一个field label
并EditText
负责捕获该字段的值,您还需要一个ids xml
文件来存储id
该editText
字段的名称以检索捕获的值,然后,当您解析所有服务响应并创建所有这些对象,您可以在那里迭代并调用EditText
创建者方法,如下所示。
class EditTextResponse extends EditText{
private String label;
private EditText edit;
public EditTextResponse(Context context,String label) {
super(context);
this.label =label;
init();
}
private void init(){
this.setId( getReflectedId() );
}
private int getReflectedId(){
Class<?> ids = R.id.class;
try{
Field field = ids.getField( label );
return field.getInt(null);
}catch( Exception ex ){
ex.printStackTrace();
}
return android.R.id.text1;
}
}
你ids xml
这个样子。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="email" type="id"/>
<item name="name" type="id"/>
<item name="other" type="id"/>
</resources>
然后在你的活动中。您可以遍历这些FieldResponse
对象并转到附加视图。
于 2013-10-17T16:59:57.023 回答