Android - 在按钮单击时获取ListView中的EditText值的总和

时间:2013-06-14 05:07:15

标签: java android listview android-edittext

我有一个ListView,每行都有一个EditText。用户可以更新EditText中填充的值,然后单击按钮以刷新ListView顶部的新总和。我的方法是遍历所有ListView记录并获取EditText的值,执行必要的计算,然后更新UI。我的问题是我在第五次迭代时继续收到NullPointerException,即使填充了一个值。它适用于前四次迭代。我的代码是否正确和/或我应该采取不同的方法来实现我的目标:

    button_finish.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            double sumOfAppliedAmounts = 0;
            Bundle extras = getIntent().getExtras();
            double exchange_rate = Double.parseDouble(extras.getString("exchange_rate")) / 100;
            double convertedPaymentAmount;

            if (exchange_rate >= 1)
                convertedPaymentAmount = Double.parseDouble(extras.getString("payment_amount")) / exchange_rate;
            else
                convertedPaymentAmount = Double.parseDouble(extras.getString("payment_amount")) * exchange_rate;

            for (int i = 0; i < (m_listview.getCount()); i++) {
                v = m_listview.getChildAt(i);
                applied_amount = (EditText) v.findViewById(R.id.list_text_applied_amount_value);
                sumOfAppliedAmounts = sumOfAppliedAmounts + Double.parseDouble(applied_amount.getText().toString()); 
            }

            text_remaining_converted_amount.setText(String.valueOf(convertedPaymentAmount - sumOfAppliedAmounts));
        }
    });

3 个答案:

答案 0 :(得分:1)

Listview lv = (ListView) findViewById(R.id.previewlist);

    final BaseAdapter adapter = new PreviewAdapter(this, name, age);

    confirm.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub


            View view = null;

            String value;
            for (int i = 0; i < adapter.getCount(); i++) {

                view = adapter.getView(i, view, lv);

                Textview et = (TextView) view.findViewById(R.id.passfare);


                value=et.getText().toString();

                 Toast.makeText(getApplicationContext(), value,
                 Toast.LENGTH_SHORT).show();
            }



        }
    });

答案 1 :(得分:0)

我不确定这是否是问题,或者您是否知道ListView过程,但getChild()方法返回的值相对于屏幕上显示的视图位置,而不是相对于整个适配器。我怀疑你的屏幕显示的视图少于总数,这就是为什么你得到一个空指针。

这篇文章可能与您的问题相同:

android ListView mListView.getChildAt(i) is null, how to solve it?

希望这会有所帮助。

答案 2 :(得分:0)

请尝试以下代码: -

View v1=m_listview.getChildAt(m_listview.getPositionForView(v)-m_listview.getFirstVisiblePosition());

v is View的{​​{1}}。

希望它可以帮助你。