0

役立つスタックの質問と私の質問への回答がたくさんあることに感謝していますが、過去に経験したことのない問題に直面しています。

問題:

ビューの行にテキストビューを設定するためにカーソルを使用しています(リストビューを使用せずに-それは私が知っているクレイジーです)。STUDENT_POINTStextview に入れられるデータベース列から取得した文字列値をフォーマットしようとしていますtpoints。私が使用しているコードは次のとおりです。

public void bindView(View v, final Context context, Cursor c) {
        final int id = c.getInt(c.getColumnIndex(Students.STUDENT_ID));
        final String name = c.getString(c.getColumnIndex(Students.STUDENT_NAME));
        final String age = c.getString(c.getColumnIndex(Students.STUDENT_AGE));
        final String points = c.getString(c.getColumnIndex(Students.STUDENT_POINTS));
        final String teachernote = c.getString(c.getColumnIndex(Students.TEACHERNOTE));
        final byte[] image = c.getBlob(c.getColumnIndex(Students.IMAGE));
        ImageView iv = (ImageView) v.findViewById(R.id.photo);

        if (image != null) {
            if (image.length > 3) {
                iv.setImageBitmap(BitmapFactory.decodeByteArray(image, 0,image.length));
            }
        }

        TextView tname = (TextView) v.findViewById(R.id.name);
        tname.setText(name);
        TextView tage = (TextView) v.findViewById(R.id.age);
        tage.setText(age);
        TextView tpoints = (TextView) v.findViewById(R.id.points);
        tpoints.setText(String.format(points, "%1$,.2f"));

        final StudentsConnector sqlCon = new StudentsConnector(context);

残りbindViewはボタン用なので、ここには含めません。問題は次の行にあります。

tpoints.setText(String.format(points, "%1$,.2f"));

大きな数字を区切るためにコンマを使用するつもりですが、これは何もしません! 誰か時間があれば、私が間違っていることを教えてください。

前もって感謝します。

4

1 に答える 1

1

2 つのパラメーターが逆になっています。フォーマット文字列の後にデータ文字列が続く必要があります。 String.format("%1$,.2f", points );

これは、コードに次の小さなスニペットを使用して適切にフォーマットされています。

    double points = 56789.45f;
    String boogie = String.format("%1$,.2f", points );

数値 56,789.45 が生成されましたが、フォーマッターの精度が原因で、より大きな数値はうまく機能しません。仮数部を分割し、別々にフォーマットして結合したい場合があります。

于 2013-04-19T00:27:40.723 に答える