如何在android中获取并存储多个genrated edittext值?

时间:2015-09-18 12:53:58

标签: java android arrays dictionary dynamic

我在点击按钮时添加了多个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。生成更多动态字段后,将扩展数组。 请帮我。

1 个答案:

答案 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类型

的ArrayList
ArrayList<Person>persons=new ArrayList<Person>();

最后在你的循环中:

Person temp = new Person(*get the name, get the age*);

persons.add(温度);

瞧!,你准备好了你的人ArrayList。