EditText и TextView, отформатированные с разделителями тысяч (,) в android

Мне нужен разделитель тысяч (,) в EditText, когда я печатаю в editText. после этого я сделаю некоторую операцию над числом. Затем покажу результат в TextView с разделителем тысяч (,).

это мой код:

public class Mainactivity extends Activity {

/** Called when the activity is first created. */

EditText        edt;
TextView        txt;
Button          btn;

OnClickListener myclick = new OnClickListener() {

                            @Override
                            public void onClick(View arg0) {

                                // my calculation
                                double num1 = Double.parseDouble(edt.getText().toString());
                                double num2 = num1 + 7;

                                txt.setText("" + num2);

                            }
                        };


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    edt = (EditText) findViewById(R.id.edt);
    txt = (TextView) findViewById(R.id.txt);
    btn = (Button) findViewById(R.id.btn);

    btn.setOnClickListener(myclick);

}

}


person nasim12w    schedule 13.09.2014    source источник
comment
Вы можете использовать ответ в [stackoverflow.com/questions/12338445/ [1]: stackoverflow .com/questions/12338445/   -  person JoaoBiriba    schedule 13.09.2014


Ответы (2)


Вы можете использовать

String value=String.format("%,.2f", num );

чтобы проанализировать число в String с разделителем тысяч, а затем установить результат в TextView или EditText, который вы хотите

Например :

txt.setText(String.format("%,.2f", num ));
edt.setText(String.format("%,.2f", num ));
person Werapat Srekhamroon    schedule 13.09.2014
comment
это хорошо для textView, но для EditText я хочу разделить, когда я набираю значение. - person nasim12w; 14.09.2014

Попробуйте использовать этот код

        @Override
        public void afterTextChanged(Editable s) {

            try
            {
                edittext.removeTextChangedListener(this);
                String value = edittext.getText().toString();
                if (value != null && !value.equals(""))
                {
                    String str = edittext.getText().toString().replaceAll(",", "");
                    if (value != null && !value.equals(""))
                        Double.valueOf(str).doubleValue();
                    edittext.setText(getDecimalFormat(str));
                    edittext.setSelection(edittext.getText().toString().length());
                }
                edittex.addTextChangedListener(this);
                return;
            }
            catch (Exception localException)
            {
                localException.printStackTrace();
                edittext.addTextChangedListener(this);
            }
        }

 private String getDecimalFormat(String value)
{
    StringTokenizer lst = new StringTokenizer(value, ".");
    String str1 = value;
    String str2 = "";
    if (lst.countTokens() > 1)
    {
        str1 = lst.nextToken();
        str2 = lst.nextToken();
    }
    String str3 = "";
    int i = 0;
    int j = -1 + str1.length();
    if (str1.charAt( -1 + str1.length()) == '.')
    {
        j--;
        str3 = ".";
    }
    for (int k = j;; k--)
    {
        if (k < 0)
        {
            if (str2.length() > 0)
                str3 = str3 + "." + str2;
            return str3;
        }
        if (i == 3)
        {
            str3 = "," + str3;
            i = 0;
        }
        str3 = str1.charAt(k) + str3;
        i++;
    }
}

надеюсь помочь вам

person Amir K. Zarini    schedule 31.08.2015