【发布时间】:2020-10-08 14:24:08
【问题描述】:
我是 Android 开发的新手,我正在尝试将字符串转换为双精度,然后将其四舍五入到小数点后 2 位,然后将其转换回字符串以显示在 ListView 中。这是我的代码:
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent){
String expenseCategory = getItem(position).getExpenseCategory();
String expenseAmount = getItem(position).getExpenseAmount();
String expenseEntryDate = getItem(position).getExpenseTodayEntry();
Double eA = Double.parseDouble(expenseAmount);
String eAnew = String.format("%.2f",eA);
Expenses ex = new Expenses(eAnew, expenseCategory, expenseEntryDate);
LayoutInflater inflater = LayoutInflater.from(mContext);
convertView = inflater.inflate(mResource, parent, false);
TextView expenseCategoryTextView = (TextView) convertView.findViewById(R.id.CategoryHistoryTV);
TextView expenseDateEntryTextView = (TextView) convertView.findViewById(R.id.DateHistoryTV);
TextView expenseAmountTextView = (TextView) convertView.findViewById(R.id.AmountHistoryTV);
expenseCategoryTextView.setText(expenseCategory);
expenseDateEntryTextView.setText(expenseEntryDate);
expenseAmountTextView.setText(eAnew);
expenseCategoryTextView.setTextColor(Color.RED);
expenseDateEntryTextView.setTextColor(Color.RED);
expenseAmountTextView.setTextColor(Color.RED);
return convertView;
}
这是错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.trim()' on a null object reference
它可以正常运行,没有:
Double eA = Double.parseDouble(expenseAmount);
String eAnew = String.format("%.2f",eA);
但它却给了我一个类似的输出
1000.0000
我知道这可能是糟糕的设计,但是由于各种原因,将费用金额声明为 double 在我的代码的其他区域中不起作用。
我尝试使用条件来“捕获”错误所说的空值,但到目前为止没有任何效果。
【问题讨论】:
标签: java android android-listview