android - 是否可以使用 SimpleCursorAdapter 格式化 double 型?

标签 android listview simplecursoradapter double-precision

我使用以下 SimpleCursorAdapter:

String campos[] = { "nome_prod", "codbar_prod",
        "marca_prod", "formato_prod", "preco"};
int textviews[] = { R.id.textProdName, R.id.textProdCodBar, R.id.textProdMarca,
        R.id.textProdFormato, R.id.textProdPreco };
CursorAdapter dataSource = new SimpleCursorAdapter(this, R.layout.listview,
        c_list, campos, textviews, 0);

这工作得很好。但“campos[]”中的“preco”来自 double 值。我可以以某种方式格式化它,以便我的光标(提供 ListView )将在点后显示带有两位数字的 double (如货币值)吗?

我可以用一些简单的方式来做到这一点,比如在某个地方使用“%.2f”,还是我必须子类化 CursorAdapter?

提前致谢。

最佳答案

您不需要子类化 CursorAdapter。只需创建一个 ViewBinder 并将其附加到适配器,它将转换光标特定列的值。就像这样:

dataSource.setViewBinder(new ViewBinder() {
    public boolean setViewValue(View view, Cursor cursor, int columnIndex) {

        if (columnIndex == 5) {
                Double preco = cursor.getDouble(columnIndex);
                TextView textView = (TextView) view;
                textView.setText(String.format("%.2f", preco));
                return true;
         }
         return false;
    }
});

关于android - 是否可以使用 SimpleCursorAdapter 格式化 double 型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11727921/

相关文章:

android - 单击更改 ListView 项目的图像

android - 如何将 OnTouchListener 添加到 ListView 项?

android - 将附加字符串附加到 SimpleCursorAdapter

java - 为什么即使 "module"和 "sModule"相等,java 代码中的 if 语句也会被跳转

Android Lollipop 模拟器 Nexus S 未运行该应用程序

c# - 在用户控件中公开控件的 itemsource 属性

java - 如何管理对象列表?

android - 在不同的过程中打开相机

android - 使用 OpenGL 处理 Activity 生命周期的正确方法是什么

android - fragment 上的 ListView