Android использует NumberFormat для элемента ListView - PullRequest
1 голос
/ 14 сентября 2011

У меня есть строка в Editext, которую я конвертирую в число типа float:

float montantFac = Float.valueOf(etMontantFac.getText().toString());

Я сохраняю его в базе данных, а затем возвращаю из БД и снова назначаю этому EditText.

etMontantFac.setText(facture.getString(facture.getColumnIndexOrThrow("montant_fa"))); 

Моя проблема в том, что он отображает некоторые числа с показателем степени. Например, 1000000 отображается следующим образом: 1e + 06

Как я могу сделать так, чтобы значения отображались только цифрами (без букв или + или чего-либо еще)?

РЕДАКТИРОВАТЬ:

@ Пратик: Спасибо, это отлично работает!

Мне также нужно сделать то же самое для элемента ListView, но я не вижу, как использовать ваше решение в этом случае. Вы можете мне помочь?

Вот мой ListView:

    private void fillData(){
    Cursor cuFactures = db.recupListeFacture(triFactures, argumentWhereVhc, choixVhc, argumentWhereGar, choixGar);
    startManagingCursor(cuFactures);

    ListAdapter adapter = new SimpleCursorAdapter(this,
            R.layout.facture_ligne,
            cuFactures,
            new String[] {"libelle_fa", "nom_vhc", "montant_fa", "nom_garage", "date_fa"},
            new int[] {R.id.listeNomFac, R.id.listeNomVhcFac, R.id.listeMontantFac, R.id.listeNomGarFac, R.id.listeDateFac});

    setListAdapter(adapter);

Соответствующее поле всегда "montant_fa"

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 14 сентября 2011

проверьте эту ссылку для формата

http://download.oracle.com/javase/tutorial/i18n/format/decimalFormat.html

попробуй так

float val = facture.getFloat(facture.getColumnIndexOrThrow("montant_fa"));

NumberFormat nf = NumberFormat.getNumberInstance(loc);
DecimalFormat df = (DecimalFormat)nf;
df.applyPattern(pattern);
String output = df.format(value);
etMontantFac.setText(output);
0 голосов
/ 05 марта 2015

Я знаю, что это старый, но здесь данные формата между sqlite и listview на случай, если кто-то попытается сделать то же самое.У меня была похожая проблема, и я решил ее с помощью этого.

вот мой пример

adapter = new SimpleCursorAdapter(....);
adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
        @Override
        public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
               if (columnIndex == cursor.getColumnIndex("columnname")) {
                   TextView tv = (TextView) view;
                   NumberFormat nf = NumberFormat.getInstance(Locale.ENGLISH);
                   tv.setText(nf.format(cursor.getInt(columnIndex)));
                   // must return true to be applied
                   return true;
               }
               return false;
        }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...