2012-07-30 2 views
2

dans mon application j'ai une zone de texte personnalisé avec BasicEditField.FILTER_NUMERIC. Lorsque l'utilisateur entre la valeur dans le champ, la virgule doit être ajoutée au format monétaire.Séparation des virgules dans le champ de texte dans Blackberry

EX: 1,234,567,8 .... comme ceci.

Dans mon code j'ai essayé comme ça.

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); 
} 

il donnera le format numérique correct ... quand je mets la valeur dans la zone de texte, il par la IllegalArgumentException. Je sais BasicEditField.FILTER_NUMERIC ne permettra pas le charcteur comme virgule (,) ..

Comment puis-je y parvenir?

+2

Vous devez faire votre propre filtre extension TextFielter, http: //www.blackberry. com/developers/docs/6.0.0api/net/rim/périphérique/api/ui/text/TextFilter.html. Et plus tard besoin de définir ce filtre à l'instance BasicEditField. – Rupak

+2

BasicEditField.FILTER_NUMERIC est connecté aux paramètres régionaux de votre BlackBerry. Certains lieux utilisent une approche différente pour la séparation des périodes. –

Répondre

2

J'ai essayé de cette façon et il fonctionne très bien ...

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; 
} 
} 

et appelle ainsi

editField.setFilter(new MyTextfilter()); 
+1

Nice. Marquez votre réponse comme résolue. Cela aidera les autres. – Rupak

+0

Cela a fonctionné pour moi aussi – Lucas

Questions connexes