1

各行に EditText を持つ ListView があります。ユーザーは、EditText に取り込まれた値を更新し、ボタンをクリックして、ListView の上部にある新しい合計を更新できます。ここでの私のアプローチは、すべての ListView レコードをループして EditText の値を取得し、必要な計算を実行してから、UI を更新することです。私の問題は、間違いなく値が設定されているにもかかわらず、5回目の繰り返しでNullPointerExceptionを受け取り続けることです。最初の 4 回の反復では問題なく動作します。私のコードは正しいですか、および/または私がやろうとしていることに対して別のアプローチをとるべきですか:

    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));
        }
    });
4

3 に答える 3

0
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();
            }



        }
    });
于 2016-03-26T10:26:13.473 に答える
0

以下のコードを試してください: -

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

どこv is ViewonClick()

それがあなたを助けることを願っています。

于 2013-06-22T06:49:37.050 に答える