Erich García
Erich García

Reputation: 1874

Getting Double from Sqlite and display decimals in android

devs!

I'm developing an Android APP but I'm a newbie in Java, and currently have a problem to display decimal values from SQLite database in android texView.

This is My adapter snippet:

public Anuncio getAnuncio(int anuncioID) {

        Anuncio Ad = new Anuncio();

        String[] columns = new String[]{"id", "header", "body", "name", "phone", "email", "rating", "cat_id", "supercat_id", "price", "date", "image", "hits", "promo_type"};
        Cursor cursor = this.db.query(false, "ads", columns, "id = " + anuncioID, null, null, null, null, "1");

        cursor.moveToFirst();

        Ad.setAd_id(cursor.getInt(cursor.getColumnIndex("id")));
        Ad.setAd_title(cursor.getString(cursor.getColumnIndex("header")));
        Ad.setAd_price(cursor.getDouble(cursor.getColumnIndex("price")));
        Ad.setAd_image(cursor.getBlob(cursor.getColumnIndex("image")));
        Ad.setAd_desc(cursor.getString(cursor.getColumnIndex("body")));

        Ad.setAd_name(cursor.getString(cursor.getColumnIndex("name")));
        Ad.setAd_phone(cursor.getString(cursor.getColumnIndex("phone")));
        Ad.setAd_email(cursor.getString(cursor.getColumnIndex("email")));
        Ad.setAd_category(cursor.getInt(cursor.getColumnIndex("cat_id")));
        Ad.setAd_supercategory(cursor.getInt(cursor.getColumnIndex("supercat_id")));
        Ad.setAd_date(cursor.getString(cursor.getColumnIndex("date")));
        Ad.setAd_hits(cursor.getInt(cursor.getColumnIndex("hits")));

        Ad.setAd_promo_type(cursor.getInt(cursor.getColumnIndex("promo_type")));

        cursor.close();

        return Ad;
    }

The field I want is the "price" filed, which is a REAL datatype. In my TextView just display a number with .0 decimals, but sometimes the price can be .32 or other value in decimals.

Anuncio Class:

public class Anuncio {

    private int ad_id;
    private String ad_title;
    private String ad_desc;
    private Double ad_price;
    private String ad_name;
    private String ad_email;
    private String ad_phone;
    private Float ad_rating;
    private byte[] ad_image;
    private int ad_category;
    private int ad_supercategory;
    private String ad_date;
    private int ad_hits;
    private int ad_promo_type;

    public Anuncio() {
    }

    public int getAd_id() {
        return ad_id;
    }

    public void setAd_id(int ad_id) {
        this.ad_id = ad_id;
    }

    public String getAd_title() {
        return ad_title;
    }

    public void setAd_title(String ad_title) {
        this.ad_title = ad_title;
    }

    public String getAd_desc() {
        return ad_desc;
    }

    public void setAd_desc(String ad_desc) {
        this.ad_desc = ad_desc;
    }

    public Double getAd_price() {
        return ad_price;
    }

    public void setAd_price(Double ad_price) {
        this.ad_price = ad_price;
    }

    public String getAd_name() {
        return ad_name;
    }

    public void setAd_name(String ad_name) {
        this.ad_name = ad_name;
    }

    public String getAd_email() {
        return ad_email;
    }

    public void setAd_email(String ad_email) {
        this.ad_email = ad_email;
    }

    public String getAd_phone() {
        return ad_phone;
    }

    public void setAd_phone(String ad_phone) {
        this.ad_phone = ad_phone;
    }

    public Float getAd_rating() {
        return ad_rating;
    }

    public void setAd_rating(Float ad_rating) {
        this.ad_rating = ad_rating;
    }

    //Get only the first 160 chars
    public String getAd_title_reduced() {
        if (ad_title.length() > 140) {
            return ad_title.substring(0, 139);
        }
        return ad_title;
    }

    //Get Imagen byte[]
    public byte[] getAd_image() {
        return this.ad_image;
    }

    //Set Imagen data
    public void setAd_image(byte[] imagen) {
        this.ad_image = imagen;
    }

    //Get Description reduced
    public String getAd_desc_reduced() {
        if (ad_desc.length() > 140) {
            return ad_desc.substring(0, 139);
        }
        return ad_desc;
    }

    public int getAd_category() {
        return ad_category;
    }

    public void setAd_category(int ad_category) {
        this.ad_category = ad_category;
    }

    public int getAd_supercategory() {
        return ad_supercategory;
    }

    public void setAd_supercategory(int ad_supercategory) {
        this.ad_supercategory = ad_supercategory;
    }

    public String getAd_date() {
        return ad_date;
    }

    public void setAd_date(String ad_date) {
        this.ad_date = ad_date;
    }

    public int getAd_hits() {
        return ad_hits;
    }

    public void setAd_hits(int ad_hits) {
        this.ad_hits = ad_hits;
    }

    public int getAd_promo_type() {
        return ad_promo_type;
    }

    public void setAd_promo_type(int ad_promo_type) {
        this.ad_promo_type = ad_promo_type;
    }
}

My layout:

<TextView
            android:id="@+id/ad_price"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_marginBottom="10dp"
            android:layout_marginLeft="15dp"
            android:text="@string/nominal_price"
            android:textColor="#4caf50"
            android:textSize="15sp"
            android:textStyle="bold" />

My Anuncio Class logic:

//Setting text in the layout
                ad_title.setText(Ad.getAd_title_reduced());
                if (Ad.getAd_price() > 0) {
                    ad_price.setText("$ " + Ad.getAd_price().toString());
                } else {
                    ad_price.setText("");
                }

enter image description here

enter image description here

Upvotes: 0

Views: 1042

Answers (2)

Munir
Munir

Reputation: 2558

Try to remove toString()

ad_price.setText("$ " + Ad.getAd_price());

Upvotes: 1

Ratilal Chopda
Ratilal Chopda

Reputation: 4220

Try this

ad_title.setText(Ad.getAd_title_reduced());
                if (Ad.getAd_price() > 0) {
                    double price = Double.parseDouble(Ad.getAd_price().toString());
                    ad_price.setText("$ " + new DecimalFormat("##.##").format(price));
                } else {
                    ad_price.setText("");
                }

Upvotes: 0

Related Questions