Bonjur à tous,

J'ai une demande qui me parraissait tres simple au début mais qui pourtant ne s'avère pas si triviale que ca...

Dans un EditText je voudrais formatter "à la volée" la saisie de l'utilisateur d'une somme d'argent de sorte d'avoir les espaces entre milliers/millions/milliards etc...

soit :
1234567 >> 1 234 567
1234 >> 1 234

j'ai pour l'instant ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
prix_edit.setOnKeyListener(new OnKeyListener() {
			@Override
			public boolean onKey(View v, int keyCode, KeyEvent event) {
 
				if (event.getAction()!=KeyEvent.ACTION_DOWN) {
 
					String res = prix_edit.getText().toString();
					res = new StringBuilder(res).reverse().toString();
					res = res.replaceAll(" ", "");
					res = res.replaceAll(".{3}", "$0 ");
 
					String reversed = new StringBuilder(res).reverse().toString();
					prix_edit.setText(reversed);
 
					prix_edit.setSelection(prix_edit.length());
				}
				return false;
			}
		});
2 problème se posent à moi:
- je trouve ce code brouillon et trop "bricolage" a mon gout
- je force l'index de saisie en fin de traitement ce qui change la maniere d'editer en se positionnant manuellement (avec le cursor)

Je suis certain qu'il existe une façon "propre" de faire cela.
Quelqu'un aurait une idée svp?

D''avance merci