java - 如何添加不同项目的数据?

标签 java android firebase firebase-realtime-database

大家好,我有一个问题。我需要添加不同商品的价格,但我不知道如何添加?我正在使用 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();
    }
}

这是我的购物车 Activity 的一部分,请帮助我!

最佳答案

假设 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

关于java - 如何添加不同项目的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50034900/

相关文章:

Java 哈希实用程序

java - 如何使用独立/容器化服务器运行 Selenium 测试

java - android 小部件中的 Binder 交易失败

javascript - 应用程序中的 HTML "Set as default"

android - 在 Android 手机中启动图库

node.js - 为什么 Cloud Functions for Firebase 需要 25 秒?

java - 防止 junit 测试运行两次

java - OpenCV,安卓 : Draw Line on bitmap

ios - 未收到 Twilio 聊天推送通知(Ionic 和 Firebase)

firebase - 从 Firebase 控制台手动删除文档而不删除子集合时,我应该怎么做才能触发 onDelete firebase 函数?