我正在构建一个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的总和。
答案 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
将适合你的需求更好(所以请记住:上面的编码不是一个合适的解决方案,即使它有效)。