사이트 및 Android 프로그래밍에 익숙하지 않으므로 누군가 나를 도울 수 있기를 바랍니다. 나는 스스로 가르치려고하고 자신을 약간의 멍청한 생각입니다. 지금은이 사이트를 더 많이 사용하지만 잘하면 기여자가 될 수 있습니다.BigDecimal 값을 json에 저장
달러 금액/통화 값을 캡처하려는 조각 내에서 EditText를 만들었습니다. BigDecimal을 사용하려고하는데 어려움을 겪고 있습니다. 나는 getters와 setter는 물론 JSON 객체를 정의한 Transaction이라는 클래스를 가지고있다.
public BigDecimal getAmount() {
return mAmount;
}
public void setAmount(BigDecimal amount) {
mAmount = amount;
}
을 내 JSON을 저장하고 같은 외모를 검색 할 수 있습니다 : 예를 들어 내 getter 및 setter가 구현
mAmountField = (EditText)v.findViewById(R.id.transaction_amount);
mAmountField.setText((CharSequence) mTransaction.getAmount());
mAmountField.addTextChangedListener(new TextWatcher() {
DecimalFormat dec = new DecimalFormat("0.00");
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (!s.toString().matches("\\$(d{1,3}(\\,\\d{3})*|(\\d+))(\\.\\d{2})?$")) {
String userInput = "" + s.toString().replaceAll("[^\\d]", "");
if (userInput.length() > 0) {
Float in = Float.parseFloat(userInput);
float percent = in/100;
mAmountField.setText("$" + dec.format(percent));
mAmountField.setSelection(mAmountField.getText().length());
}
mTransaction.setAmount(BigDecimal.valueOf());
}
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void afterTextChanged(Editable s) {
}
});
: 내 조각 내 OnCreateView에서
json.put(JSON_AMOUNT, mAmount);
if (json.has(JSON_AMOUNT)) {
mAmount = BigDecimal.valueOf(json.getDouble(JSON_AMOUNT));
}
을 내 글고 같이 보인다
내가 알아 내지 못하는 것은 mAmountField에 입력 한 값을 JSON Object에 저장하는 방법입니다. 문자열을 사용하면 (예제) :
public void onTextChanged(CharSequence s, int start, int before, int count) {
mTransaction.setDetails(s.toString());
}
그러나 BigDecimal에 대한 올바른 구문을 이해할 수 없습니다. 어떤 도움이나 통찰력이라도 대단히 감사하겠습니다. 미리 감사드립니다! 당신이 된 JSONObject에 문자열로 BigDecimal를 저장하려면
Android 용 표준 org.json 라이브러리를 사용하는 경우 숫자 유형은 Long 또는 Double입니다. Double이 적합한 정밀도를 제공한다면이를 사용하십시오. 또는 단순히 값을 문자열로 쓰려면'toString()'메서드를 사용해야 할 수도 있습니다. – Squonk
참고로, [BigInteger 및 BigDecimal 지원] (https://github.com/douglascrockford/JSON-java/pull/135)을 추가하는 json.org 라이브러리의 마스터 브랜치에 대한 커밋이 있으므로 기대하십시오 향후 릴리스에서. – Will