Разделение запятыми в текстовом поле в Blackberry

в моем приложении у меня есть настраиваемое текстовое поле с BasicEditField.FILTER_NUMERIC. Когда пользователь вводит значение в поле, к формату валюты следует добавить запятую.

Пример: 1,234,567,8 .... вот так.

В моем коде я пробовал вот так.

protected boolean keyUp(int keycode, int time) {
    String entireText = getText();
    if (!entireText.equals(new String(""))) {
        double val = Double.parseDouble(entireText);

        String txt = Utile.formatNumber(val, 3, ",");// this will give the //comma separation format 
        setText(txt);// set the value in the text box
    }
    return super.keyUp(keycode, time);
}

он даст правильный числовой формат ... когда я установлю значение в текстовом поле, оно пройдет через IllegalArgumentException. Я знаю, что BasicEditField.FILTER_NUMERIC не позволит использовать символ, например запятую (,) ..

Как я могу этого добиться?


person prakash    schedule 30.07.2012    source источник
comment
Вам необходимо создать собственный фильтр, расширяющий TextFielter, blackberry.com/developers/docs/6.0.0api/net/rim/device/api/ui/. А позже необходимо установить этот фильтр для экземпляра BasicEditField.   -  person Rupak    schedule 30.07.2012
comment
BasicEditField.FILTER_NUMERIC связан с языковым стандартом вашего BlackBerry. В некоторых регионах используется другой подход к разделению периодов.   -  person Eugen Martynov    schedule 30.07.2012


Ответы (1)


Я пробовал этот способ, и он отлично работает ...

public class MyTextfilter extends TextFilter {
private static TextFilter _tf = TextFilter.get(TextFilter.REAL_NUMERIC);

public char convert(char character, int status) {
    char c = 0;

    c = _tf.convert(character, status);
    if (c != 0) {
        return c;
    }

    return 0;
}

public boolean validate(char character) {
    if (character == Characters.COMMA) {
        return true;
    }

    boolean b = _tf.validate(character);
    if (b) {
        return true;

    }

    return false;
}
}

и звони так

editField.setFilter(new MyTextfilter());
person prakash    schedule 30.07.2012