访问动态文本字段值android

时间:2014-03-06 04:20:07

标签: android dynamic android-edittext

我创建了一些动态的EditText文件和一个使用foreach循环的按钮,代码如下:

void callDynamicView(){
        String configText="Building Name, S, 10; No: of Floors, I, 3; Area of Plot, D, 10; Location(X), L, 15.3;  Location(Y),  L, 15.3; Photo, P, 10";

        String[] splits = configText.split(";");
        ScrollView sv = new ScrollView(this);
        LinearLayout ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);
        sv.addView(ll);

        TextView tv = new TextView(this);
        tv.setText("Survey");
        tv.setTextColor(Color.rgb(200,0,0));
        ll.addView(tv);



        for(String splitSemi: splits){

            String[] splitsCommas = splitSemi.split(",");
            int len = splitsCommas[1].length();

            //Toast.makeText(getBaseContext(), len, Toast.LENGTH_SHORT).show();
            if(splitsCommas[1].equals("P")){
                Toast.makeText(getBaseContext(), "Keri", Toast.LENGTH_SHORT).show();
                Button btn = new Button(this);  
                btn.setText("Photo");
                ll.addView(btn);
                //this.setContentView(sv);
            }           
            else{

                //Toast.makeText(getBaseContext(), "else", Toast.LENGTH_SHORT).show();
                TextView txtv = new TextView(this);
                txtv.setText(splitsCommas[0]);
                ll.addView(txtv);

                EditText et = new EditText(this);
                ll.addView(et);

                }


        }

        Button btn = new Button(this);
        btn.setText("Submit");
        ll.addView(btn);
        this.setContentView(sv);

        btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

        //  Toast.makeText(getBaseContext(), et.getText().toString(), Toast.LENGTH_SHORT).show();

            }
        });


    }

我想在按钮点击中访问所有输入的值。但我无法得到这些价值观。 我检查了varios的可能性。我是新手动态创建UI。可以帮帮我们吗?

6 个答案:

答案 0 :(得分:3)

EditText的ID设置如下...并将这些ID存储在List中,以便稍后检索它们。

 List<Integer> editTextIdList = new ArrayList<Integer>();
 int id = 0;

 for(String splitSemi: splits){

        String[] splitsCommas = splitSemi.split(",");
        int len = splitsCommas[1].length();

        //Toast.makeText(getBaseContext(), len, Toast.LENGTH_SHORT).show();
        if(splitsCommas[1].equals("P")){

             .....
        }           
        else{

            //Toast.makeText(getBaseContext(), "else", Toast.LENGTH_SHORT).show();
            TextView txtv = new TextView(this);
            txtv.setText(splitsCommas[0]);
            ll.addView(txtv);

            EditText et = new EditText(this);
            et.seId(id);
            editTextIdList.add(id);
            ll.addView(et);

            id++;

        }
    }

在使用这些ID的OnClickListener ...创建EditText实例并获取其文字如下...

   btn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            for(int i = 0; i < editTextIdList.size(); i++) {

                EditText editText = (EditText)findViewById(editTextIdList.get(i));
                String text = editText.getText().toString();

            }

           // Toast.makeText(getBaseContext(), et.getText().toString(), Toast.LENGTH_SHORT).show();

        }
    });

答案 1 :(得分:1)

只需在类级别声明以下变量,

TextView tv;
TextView txtv;  
EditText et;

答案 2 :(得分:1)

不要在循环中声明Button,TextView和EditText,而是在onCreate()方法上面声明它。您可以随意将其初始化。

public class YourClass(){
        TextView tv;
        Button btn;
        EditText edt;

        /* your onCreate() and all other codes here*/
        .....................
        .....................

        public void callDynamicView(){
           /* Initialize and create your view here */
        }
}

您可以直接访问班级中的TextView,Button and EditText

答案 3 :(得分:1)

setId到你的editText和onClick of button do:

EditText editText =(EditText) context.findViewById(id);
String result = editText.getText().toString();

或使用

ArrayList<EditText> editTextList = new ArrayList<EditText>();

在for循环中添加editText editTextList.add(i,new EditText(context)); 获取价值

editTextList.get(i).getText().toString();

答案 4 :(得分:1)

String strtextview = txt.gettext。 toString();

String strbtnText = btn.gettext。的toString();

答案 5 :(得分:1)

你可以这样做:

  
      
  1. TextViewEditText的每次创作中,指定一个ID   观点。
  2.   
  3. TextViewEditText添加到相同类型的列表中,即。   List<EditText>
  4.   
  5. 点击Button点击,获取TextViewEditText的值   添加到列表中。
  6.   

就像:

for(int i=0;i<arrayListOfViews.size();i++) {
     EditText editObj = arrayList.get(i);
     String val = editObj.getText().toString();
}

希望有所帮助!