如何从充气编辑文本中读取值并将它们放入 ArrayList

How to read values from inflatable Edit Text and put them in an ArrayList

我经常遇到 EditTextsArrayLists 的问题,因为我经常使用它们。我试图从充气编辑文本中获取输入值并将它们放入 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 时,无论我输入什么值,值 return 都是 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());
        }
    });}