Reputation: 1874
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("");
}
Upvotes: 0
Views: 1042
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