Как добавить данные разных предметов? - PullRequest
0 голосов
/ 26 апреля 2018

Привет, ребята, у меня проблема.Мне нужно добавить цену на разные вещи, но я не знаю, как?Я использую Firebase и Android Studio.

У меня следующая структура базы данных:

a/myCart
    a
       --- name: Pizza
       ---price: 5
       ---image: https://im...

    b
       ---name: Soup
       ---price: 12
       ---image: https://im...

Мне нужно показать в TextView общую сумму моей корзины, в этом примере: 17,00 $

Я использую Firebase UI.

Мой код:

public class Cart extends AppCompatActivity {
    FirebaseRecyclerAdapter<MyData, myViewHolder3> adapter = null;
    int total;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_cart);

/////I need to show the total here

        final TextView txtTotal = (TextView) findViewById(R.id.total);

        RecyclerView r = (RecyclerView) findViewById(R.id.listaCart);
        final FirebaseDatabase database = FirebaseDatabase.getInstance();

        final String user = "a";
        final DatabaseReference myRef1 = database.getReference("users/"+user+"/myCart");

        r.setHasFixedSize(true);

        ////
        StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL);
        r.setLayoutManager(layoutManager);

           adapter = new FirebaseRecyclerAdapter<MyData, myViewHolder3>(
                MyData.class, R.layout.cart_list, myViewHolder3.class, myRef1
        ) {
            @Override
            protected void populateViewHolder(final myViewHolder3 viewHolder, final MyData s, final int position) {
                // 

          final String key = adapter.getRef(position).getKey();

            viewHolder.setPrice(["$"+price+".00");


            viewHolder.setName(s.getName());
            viewHolder.setImageProduct(s.getImage());

            }
        };
        r.setAdapter(adapter);
        adapter.notifyDataSetChanged();
    }
}

Это часть моей активности в корзине, пожалуйста, помогите мне!

1 Ответ

0 голосов
/ 26 апреля 2018

Предполагая, что узел myCart является прямым потомком вашего корня Firebase, а свойство price имеет тип Integer, чтобы суммировать все эти цены, используйте следующий код:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference myCartRef = rootRef.child("myCart");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        int total = 0
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            int price = ds.child("price").getValue(Integer.class);
            total = total + price;
        }
        Log.d("TAG", "total = " + total);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
myCartRef.addListenerForSingleValueEvent(valueEventListener);

Выход будет: total = 17

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