I'm trying to show the points from my firestore database unto my android application but it only shows whole number instead of actually including the decimal numbers. Firestore database: https://imgur.com/J6y9Tsg Android application: https://imgur.com/5CuBvDW
I have read previous posts about format("#.##") or DecimalFormat("#,###.####") but I'm not entirely sure how to apply that to my code.
public class MainActivity extends AppCompatActivity {
private TextView powents;
FirebaseFirestore fStore;
FirebaseAuth fAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button logout = findViewById(R.id.logout);
ImageView qrimage = findViewById(R.id.qrimage);
powents = findViewById(R.id.powents);
fStore = FirebaseFirestore.getInstance();
fAuth = FirebaseAuth.getInstance();
FirebaseUser user = fAuth.getCurrentUser();
if (user != null) {
String mail = user.getEmail();
DocumentReference docref = fStore.collection("Users").document(mail);
docref.addSnapshotListener(this, (documentSnapshot, error) -> {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
powents.setText(String.valueOf(Math.toIntExact(documentSnapshot.getLong("Points"))));
}
});
}
try {
BarcodeEncoder barcode = new BarcodeEncoder();
Bitmap bitmap = barcode.encodeBitmap(Objects.requireNonNull(FirebaseAuth.getInstance().getCurrentUser()).getEmail(), BarcodeFormat.QR_CODE, 650, 650);
qrimage.setImageBitmap(bitmap);
} catch (Exception e) {
e.printStackTrace();
}
logout.setOnClickListener(view -> {
FirebaseAuth.getInstance().signOut();
Toast.makeText(MainActivity.this, "Logged Out!", Toast.LENGTH_SHORT).show();
startActivity(new Intent(MainActivity.this, Login.class));
finish();
});
}
}
CodePudding user response:
Your code is explicitly asking Firestore for a long (integer) value:
documentSnapshot.getLong("Points")
That's not what you want. You want a double (floating point) value instead using getDouble():
documentSnapshot.getDouble("Points")
You can then turn that into a string for your TextView.