У меня есть ListView, у которого есть EditText в каждой строке. Пользователь может обновить значение, которое заполняется в EditText, а затем нажать кнопку, чтобы обновить новую сумму в верхней части ListView. Мой подход заключается в том, чтобы перебирать все записи ListView и получать значение EditText, выполнять необходимые вычисления, а затем обновлять интерфейс. Моя проблема заключается в том, что я продолжаю получать исключение NullPointerException на моей пятой итерации, хотя определенно значение заполнено. Он отлично работает для первых четырех итераций. Является ли мой код правильно и/или я должен принимать другой подход к тому, что я пытаюсь сделать:Android - Получите сумму значений EditText в элементе ListView при нажатии кнопки
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));
}
});
Спасибо, что привело меня в правильном направлении. Я не знал, что вы не можете перебирать ВСЕ элементы ListView (видимые или нет). Я выполнил этот процесс на уровне адаптера, и он работает хорошо. – bgeveritt
Рад, что это помогло. Я обнаружил, что в некоторых ситуациях некоторые оптимизации пользовательского интерфейса, которые делает Android, могут быть головной болью. – Scott