Home > other >  How to display decimal value from firestore database to android studio
How to display decimal value from firestore database to android studio

Time:07-31

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.

  • Related