我经常遇到EditTexts
和ArrayLists
的麻烦,因为我经常使用它们。我试图从可编辑文本中获取输入值,然后将它们放入ArrayList中,但是显然,我接收到的值始终为0,0,0
。我怎样才能解决这个问题?
这是我认为可行的代码:
public void addCourses() {
LayoutInflater inflater = LayoutInflater.from(this);
for (int i = 0; i < this.coursesList.size(); i++) {
View v = inflater.inflate(R.layout.item_course, null, false);
this.courses.addView(v);
final int position = CalculateActivity.this.scoreList.size();
final int position2 = CalculateActivity.this.totalList.size();
CalculateActivity.this.scoreList.add(0);
EditText Score = (EditText) v.findViewById(R.id.Score);
EditText Total = (EditText) v.findViewById(R.id.Total);
Score.addTextChangedListener(new TextWatcher() {
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
public void afterTextChanged(Editable editable) {
percentage = Integer.parseInt(editable.toString());
int perc = (int) percentage;
CalculateActivity.this.scoreList.set(position, perc);
}
});
Total.addTextChangedListener(new TextWatcher() {
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
public void afterTextChanged(Editable editable) {
hundredth = Integer.parseInt(editable.toString());
int hund = (int) percentage;
CalculateActivity.this.scoreList.set(position2, hund);
}
});
}
}
如果您需要任何其他代码来帮助您解决此问题,只需将其放在注释中即可。
编辑:::
ScoreList和TotalList的初始化看起来像这样
ArrayList<Integer> gradesList = new ArrayList();
ArrayList<Integer> scoreList = new ArrayList();
ArrayList<Integer> totalList = new ArrayList();
另外,上面的代码在这里使用:
public void onClick(View view) {
for (int x = 0; x < scoreList.size()&& x < totalList.size(); x++)
{
CalculateActivity.this.gradesList.add(scoreList.get(x) / totalList.get(x));
}
for (int i = 0; i < CalculateActivity.this.gradesList.size(); i++) {
int crdtHrs = ((Course) CalculateActivity.this.coursesList.get(i)).getCreditHours();
totalCrdtHrs += (int) crdtHrs;
averageGrade1 += (((int) CalculateActivity.this.gradesList.get(i)) * (((Course) CalculateActivity.this.coursesList.get(i)).getCreditHours()));
averageGrade2 = averageGrade1/totalCrdtHrs;
}
int gpaCalc = averageGrade2;
CalculateActivity.this.gpa.setText(String.format(""+gpaCalc));
}
}
还有一个问题是,当我Log.d scoreList或TotalList的ArrayList时,无论我输入什么值,这些值都将返回为0,0,0。
最佳答案
使用getText()。这样会更简单。
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mButton = (Button)findViewById(R.id.button);
mEdit = (EditText)findViewById(R.id.edittext);
mButton.setOnClickListener(
new View.OnClickListener()
{
public void onClick(View view)
{
Log.v("EditText", mEdit.getText().toString());
}
});}