Есть ли способ для меня, чтобы получить всю строку и преобразовать ее в двойной и добавить все из них? - PullRequest
1 голос
/ 22 мая 2019

Ошибка

Я все еще новичок в FireBase, и я хотел спросить на этом изображении Firebase в синей линии.Как мне превратить их в двойные и, наконец, добавить все синие линии.По сути, я хотел добавить всю цену и поместить ее в текстовое представление для общей цены. Может ли кто-нибудь помочь мне с этим кодом, который я сделал до сих пор?

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_payment);


    mRecyclerView2 = findViewById(R.id.recyclerview3);
    mRecyclerView2.setHasFixedSize(true);
    mRecyclerView2.setLayoutManager(new LinearLayoutManager(this));

    mModel2 = new ArrayList<>();
    mAuth = FirebaseAuth.getInstance();
    FirebaseUser user = mAuth.getCurrentUser();
    String userID = user.getUid();
    mAdapter2 = new ViewHolder2(Payment.this, mModel2);
    mRecyclerView2.setAdapter(mAdapter2);
    mDatabaseReference2 = FirebaseDatabase.getInstance().getReference(userID).child("Ordered");
    mDatabaseReference2.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            double cost = 0;
            for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                Model2 model2 = postSnapshot.child("price").getValue(Model2.class);
                String venueLatString = String.valueOf(model2);
                double total = Double.parseDouble(venueLatString);

                cost = total + cost;
                String finaltotal = String.valueOf(cost);
                Total = findViewById(R.id.totalprice);
                Total.setText(finaltotal);

                mModel2.add(model2);
            }
            mAdapter2.notifyDataSetChanged();

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });


}

Если я запускаю кодэто падает.Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 23 мая 2019

Вы получаете эту ошибку, потому что неправильно используете следующую строку кода:

Model2 model2 = postSnapshot.child("price").getValue(Model2.class);

Дочерний объект price содержит объект String, а not a Model2, поэтому эта ошибка.

Чтобы решить эту проблему, удалите из вышеприведенной строки кода вызов .child("price"):

Model2 model2 = postSnapshot.getValue(Model2.class);

Теперь, чтобы получить двойную цену, используйте следующие строки кода:

String stringValue = model2.getPrice();
double price = Double.parseDouble(stringValue);

Имея price в качестве double, вы можете теперь выполнять с ним любые необходимые операции.

0 голосов
/ 23 мая 2019

Вы можете настроить свою модель следующим образом

public class test {
    String food;
    String order;
    String price;

    public test() {
    }

    public test(String food, String order, String price) {
        this.food = food;
        this.order = order;
        this.price = price;
    }

    public String getFood() {
        return food;
    }

    public void setFood(String food) {
        this.food = food;
    }

    public String getOrder() {
        return order;
    }

    public void setOrder(String order) {
        this.order = order;
    }

    public double getPrice() {
        double value = 0;
        try{
            value = Double.parseDouble(price);
        }
        catch (Exception e){
            value = 0;
        }
        return value;
    }

    public void setPrice(String price) {
        this.price = price;
    }
}

теперь вы можете использовать getPrice , чтобы получить двойное значение напрямую

и в вашем адаптере

            Test model2 = postSnapshot.getValue(Test.class);

и получите двойное значение

model2.getPrice

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...