我有一个web服务,根据该webservice,我获得了诸如姓名,电子邮件等数据。数据会根据Web服务而变化。一些web服务可能只有两个字段,一些可能有3个字段。所以我的问题是如何根据webservice动态添加EditText字段?
答案 0 :(得分:0)
我接近这个的方法是使用具有最大字段数的布局。因此,如果有3个,您只需查看Web服务返回的内容,并根据您的需要更改字段的可见性。
您可以使用View
类的setVisibility(int)方法执行此操作。
答案 1 :(得分:0)
您可以拥有一个存储field label
和EditText
的类,该字段负责此字段的捕获值,您还需要一个ids xml
文件来存储该id
的{ {1}}使用字段名称来检索捕获的值,然后,当您解析所有服务响应并创建所有这些对象时,您可以在那里进行迭代并调用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>
个对象,然后转到附加视图。