Drakora
Drakora

Reputation: 118

Obscure issue with string formatting from SQLite database

I appreciate there's a lot of helpful stack questions and answers to my question but I'm running into problems I've not had in the past.

The Problem:

I am using a cursor to populate textviews in rows on a view (without using listview - that's crazy I know). I am trying to format the string value(s) taken from from the database column STUDENT_POINTS that are put into a textview tpoints. Here is the code I am using:

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

The rest of bindView is for buttons so I have not included it here. The problem is with the line:

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

I'm intending to have commas to separate out large numbers but this does nothing! If anybody has the time could you please tell me what I'm doing wrong?

Thanks in advance.

Upvotes: 0

Views: 111

Answers (1)

HalR
HalR

Reputation: 11073

You have your two parameters backwards-- you should have the format string followed by the data string: String.format("%1$,.2f", points );

This formatted nicely for me with this little snippet in my code:

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

and it generated a number 56,789.45 But bigger numbers don't work well due to precision in the formater. You may want to split the mantissa off of their, format them separately and combine them.

Upvotes: 1

Related Questions