1

数値に関するデータをリスト ビューに表示する必要があります。これらのデータは、sqlite であるデータベースから取得します。

リストビューを埋めるためにシンプルなカーソルアダプターを使用しています。問題は、100 万以上の数値が指数形式で格納されることです。たとえば、1000 000 のような数値を挿入すると、1+06E として格納されます。問題は、1 000 000 として表示する必要があることです。しかし、カーソルまたは simplecursadapter 内でその形式を変更することはできません。

リストビューを埋めるための私のコードは次のとおりです。

Cursor c = admin.obtenerCursorGastosVarFecha(fechaSelUs);

      // The desired columns to be bound
      String[] columnas = new String[] {"_id", "Descripcion", "Costo", "Fecha_Creado"};

      // the XML defined views which the data will be bound to
      int[] views = new int[] {R.id.IdGstVar, R.id.DescGstVar, R.id.CostoGstVar, R.id.FechaGstVar };

      // create the adapter using the cursor pointing to the desired data 
      //as well as the layout information
      dataAdapter = new SimpleCursorAdapter(this, R.layout.lista_gastos_variables, c, columnas, views, 0);

私はすべて文字列としてここに来ていますが、100万以上の数値は指数数で表示されます

このコードを試しましたが、まったく機能しません。

1,000 万未満の値を変更するだけでなく、値を四捨五入または変更するため、たとえば 8 888 888 を挿入すると 8 888 890 と表示されます。

データベースに格納されているすべての数値を自然数で表示する必要があります。

また、指数形式に変更せずに数値を含む行をデータベースに挿入する方法がある場合、どのように行われますか? ご助力ありがとうございます!

dataAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
            @Override
            public boolean setViewValue(View view, Cursor cursor, int column) {

                if( column == 2 ){ // let's suppose that the column 0 is the date
                    TextView tv = (TextView) view;

                    // here you use SimpleDateFormat to bla blah blah
                    tv.setText(""+Double.parseDouble(cursor.getString(cursor.getColumnIndex("Costo"))));
                    return true;
                }




                return false;
            }
        });
4

1 に答える 1

0

データ型を real として使用しているため、実数として db に格納しています。SqliteDB への格納時に指数形式に変換します。データベースから読み取ろうとすると、変換された指数形式が文字列に返されます。varcharデータ型をcostoに変更するだけです。それはあなたの問題を解決します。

于 2013-07-25T05:21:51.410 に答える