Android 对 ListView 的一项使用 NumberFormat

Posted

技术标签:

【中文标题】Android 对 ListView 的一项使用 NumberFormat【英文标题】:Android use NumberFormat for an item of a ListView 【发布时间】:2011-09-14 13:22:43 【问题描述】:

我在 Edittext 中有一个字符串,我将其转换为这样的浮点数:

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

我将它保存在数据库中,然后从数据库中取回它并再次将其分配给此 EditText。

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

我的问题是它显示了一些带指数的数字。 例如,1000000 显示如下:1e+06

如何才能只显示带有数字的值(没有字母或 + 或其他任何东西)?

编辑:

@Pratik:谢谢,效果很好!

我也需要对 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”

提前谢谢你!

【问题讨论】:

你试过DecimalFormat吗? developer.android.com/reference/java/text/DecimalFormat.html 【参考方案1】:

查看此链接的格式

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

【讨论】:

那部分 DecimalFormat df = (DecimalFormat)nf; df.applyPattern(模式);没有必要。默认的语言环境格式通常就足够了【参考方案2】:

我知道这是旧的,但这里是format data between sqlite and 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;
        
);

【讨论】:

以上是关于Android 对 ListView 的一项使用 NumberFormat的主要内容,如果未能解决你的问题,请参考以下文章

短/长按 ListView 的一项

未创建 Android listview 内容视图

Android:ListView 仅显示第一项。 (请参考提供的图片)

在包含 ListView (Android) 的视图中滚动

Android NestedScrollView 在 ListView 中仅显示一项

ListView内的Android约束布局 - 最后一项样式被破坏