我正在开发一个关于pmt的应用程序。这里我有一个函数,它将edittext(仅限数字)中的输入转换为十进制(要求edittext以某种方式使用户的给定输入看起来像一个货币,例如用户键入三个数字“987”在edittext中它会显示“987”没有变化但是当用户输入更多时,一个或多个让我们说“987654”它将是“987,654”)
Edittext 1st example
987
Edittext 2nd example
987,654
Edittext another example
987,654,321
Edittext another example
9,876
Edittext another example
98,765
然而这个函数会使来自该edittext的输入不可计算(我还是新的android(eclipse)我有另一个函数,它将从同一个edittext获取输入并自动计算(没有按钮点击或一些动作)然后在同一布局上的textview上显示结果) 我想知道是否我们,让我们说它转换为int(计算)然后将其转换回十进制。或者以某种方式存储要临时计算的数据,而不更改显示,edittext上的显示仍然是十进制格式。
我的makedecimal函数:
public void myEditTextAndroidOnClick(View v)
{
MyEditText.setRawInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
DigitsKeyListener dkl = new DigitsKeyListener(true,true);
MyEditText.setKeyListener(dkl);
MyEditText.addTextChangedListener(new TextWatcher(){
private String current = "";
@Override
public void afterTextChanged(Editable s) {
String userInput=s.toString();
if(!userInput.toString().equals(current)){
MyEditText.removeTextChangedListener(this);
String cleanString = userInput.replaceAll("[,]", "");
if(cleanString.length()>0){
double parsed = Double.parseDouble(cleanString);
String formated = DecimalFormat.getNumberInstance().format(parsed);
current = formated;
MyEditText.setText(formated);
MyEditText.setSelection(formated.length());
}else{
MyEditText.setText(cleanString);
MyEditText.setSelection(cleanString.length());
}
MyEditText.addTextChangedListener(this);
}
}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
}
});
}
计算器
MyEditText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
String text1 = MyEditText.getText().toString();
if (text1.length() != 0) {
int input1 = Integer.valueOf(text1);
int input2 = Integer.valueOf(s.toString());
int output = (input1 * input2) / 100;
MyTextViewThatWillDisplayTheResult.setText(output + "");
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
text2来自同一个layout上的另一个edittext。我在想如果这个函数可以在同一个函数中合并或以某种方式转换成int(我实际上使用long)然后在MyTextViewThatWillDisplayTheResult上转换回十进制。但我不知道该怎么做,我被困在这里。
提前致谢
答案 0 :(得分:0)
在 edittext 中显示您的数据时,请输入逗号并在计算时删除逗号,然后进行计算。
使用替换:
x=x.replaceAll(',', "");