我在点击按钮时添加了多个Edittext。我也得到了这些Edittext的值,但我无法将数据存储在数组中。
EditText textIn;
Button buttonAdd, buttonShow;
LinearLayout container;
List<EditText> allEds = new ArrayList<EditText>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonAdd = (Button)findViewById(R.id.add);
buttonShow = (Button) findViewById(R.id.show);
container = (LinearLayout)findViewById(R.id.container);
buttonAdd.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
LayoutInflater layoutInflater =
(LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View addView = layoutInflater.inflate(R.layout.row, null);
EditText editText1 = (EditText) addView.findViewById(R.id.editText1);
EditText editText2 = (EditText) addView.findViewById(R.id.editText2);
allEds.add(editText1);
allEds.add(editText2);
Button buttonRemove = (Button) addView.findViewById(R.id.remove);
buttonRemove.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
((LinearLayout) addView.getParent()).removeView(addView);
}
});
container.addView(addView);
}
});
buttonShow.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
String[] strings = new String[allEds.size()];
for(int i=0; i < allEds.size(); i++){
strings[i] = allEds.get(i).getText().toString();
Log.e("My data", strings[i]);
}
}
});
这里我使用 strings [i] 获取所有值,但我想将值存储在数组中。 [{“Name”:“Smith”,“Age”,“26”},{“Name”:“Jhon”,“Age”,“30”}] 。在这里,我将从多个生成的Edittext中获取Smith,26和Jhon,30。生成更多动态字段后,将扩展数组。 请帮我。
答案 0 :(得分:0)
你说你必须把它作为一个数组。在我看来,你已经把它作为一个 String 数组。你还想要什么?您描述预期结果的方式看起来像是半生不熟的json输出。也许您可以创建一个代表 Person 所需信息的类,然后创建 Person 类型的 ArrayList 。另外,为了使 Person 对象更容易填充,您可以声明一个构造函数,该构造函数将 name 和 age 作为参数。在循环中,您可以使用该构造函数创建 Person 对象,然后将该对象添加到 ArrayList 。 这会有所帮助:
class Person{
String name;
int age;
Person(String name, int age){
this.name=name;
this.age=age;
}
}
然后在进入循环之前,声明一个Person类型
的ArrayListArrayList<Person>persons=new ArrayList<Person>();
最后在你的循环中:
Person temp = new Person(*get the name, get the age*);
persons.add(温度);
瞧!,你准备好了你的人ArrayList。