如何在android中获得动态创建的EditText的价值?

时间:2015-11-04 06:49:24

标签: java android android-edittext dynamic-programming

我正在构建一个Android应用程序,我正在创建动态的EdittextView。我需要显示用户输入的整数之和。下面是我创建Dynamic EdittextView的代码:

for (int i = 1; i < ZipRunApplication.ConfigLeg; i++){
        LayoutInflater inflater = null;
        inflater = (LayoutInflater) getApplicationContext()
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View mLinearView = inflater.inflate(R.layout.drop_money, null);
        TextView droxTextView = (TextView) mLinearView.findViewById(R.id.dropTextView);
        final TextView position = (TextView) mLinearView.findViewById(R.id.position);
        final TextView Amount = (TextView) mLinearView.findViewById(R.id.Amount);
        final EditText dropEditTextView = (EditText) mLinearView.findViewById(R.id.dropEditext);

        dropEditTextView.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                Amount.setText(dropEditTextView.getText().toString()); //             


            }
        });
        droxTextView.setText("Amount to be pick From Drop " + String.valueOf(i));
        position.setText(String.valueOf(i));
        droxTextView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });
        container.addView(mLinearView);
    }

任何人都可以帮助我获得动态创建的所有EdittextView的总和。

4 个答案:

答案 0 :(得分:1)

回答:

  

任何人都可以帮我获取所有EdittextView的总和   动态创建。

您可以维护EditText的ArrayList,然后可以遍历它们并获取每个文本中输入的文本并找到总和。

作为示例,我有以下代码段:

LinearLayout layout;
List<EditText> concernedEditTexts;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        layout = (LinearLayout)findViewById(R.id.base_layout); // Base layout defined in xml

        concernedEditTexts = new ArrayList<EditText>();

        // Creating five EditTexts
        for(int i= 0; i< 5; i++){ 
            EditText text = new EditText(getApplicationContext());
            layout.addView(text);
            concernedEditTexts.add(text); // Adding dynamically created EditText in the ArrayList
        }
        Button button = new Button(getApplicationContext());
        button.setText("Get Sum");
        layout.addView(button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int sum = 0;

                // Iterate through the List and find the sum
                for(EditText editText : concernedEditTexts){
                    sum+= Integer.parseInt(editText.getText().toString());
                }
                Log.d("SUM","Sum is "+sum);
            }
        });
    }

注意:此代码有点原始,需要更多验证,但应该足以解释这个概念。

在您的示例中,您需要将每个dropEditTextView存储在List中,然后遍历列表,如我的示例所示,将为您提供所需的结果。

答案 1 :(得分:0)

你可以使用

Integer.parseInt(dropEditTextView.getText().toString())

答案 2 :(得分:0)

setTag()将每个EditText作为i变量,并获取大小为ZipRunApplication的arrarylist。当您在edittext中编写时,然后在textchnage侦听器中获取标记值并转换为int。此值将告诉您正在编写的arraylist中的哪个位置。然后在arraylist的那个位置设置Integer.parseInt(editTextString)。

答案 3 :(得分:0)

四个提示:

1 - 我们在这里得到了父母的孩子:

when

2 - 不要忘记解析您尝试接收的数据:

 for (int i = 0; i < mLinearLayout.getChildCount(); i++) {
            if (mLinearLayout.getChildAt(i) instanceof LinearLayout) {
                LinearLayout ll = (LinearLayout) mLinearLayout.getChildAt(i);
                for (int j = 0; j < ll.getChildCount(); j++) {
                    if (ll.getChildAt(j) instanceof EditText) {
                        ll.getChildAt(j).setOnFocusChangeListener(this);
                    }
                }
            }
        }

3 - 注意:

Integer.parseInt(mFocusedEditText.getText().toString()); &lt; - &gt; view.setTag()

4 - 最后但并非最不重要:在可读性,可维护性和性能方面,您很快就能达到一个目标,View.getTag() - 或ListView将适合你的需求更好(所以请记住:上面的编码不是一个合适的解决方案,即使它有效)。

ListViewRecyclerView