【问题标题】:firebase database value of totalfirebase 数据库总价值
【发布时间】:2018-11-13 00:27:16
【问题描述】:

在firebase中添加qty值的总量需要什么样的方法? 这里我附上了firebase数据库截图。

假设列表中的数量和第二个数量之和为 500+800=1300。所以我希望得到总和 1300。下面是从 firebase 检索数据以存储在 textview (@+id/txt_total_value) 上以供显示的代码。

mUploads = new ArrayList<>();

    mDatabaseRef = FirebaseDatabase.getInstance().getReference("Sreeauto");

    mDatabaseRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
                int sum = 0;

            for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                for (DataSnapshot dSnapshot : postSnapshot.getChildren()) {
                    Datastore upload = dSnapshot.getValue(Datastore.class);
                    mUploads.add(upload);

                    int value = 
Integer.parseInt(dSnapshot.child("qty").getValue(String.class));
                    sum += value;


                }

            }

            mAdapter = new Adapater(ViewProduction.this, mUploads);

            mRecyclerView.setAdapter(mAdapter);
            mprogress.setVisibility(View.INVISIBLE);

            txt_total_value.setText(sum);

        }

Datastore.java

public class Datastore {

private String Date;
private String Shift;
private String Qty;
private String Incharge;

public Datastore(){

}

public Datastore(String date,String shift, String qty, String incharge){
    Date = date;
    Shift = shift;
    Qty = qty;
    Incharge = incharge;
}

public String getDate() {
    return Date;
}

public void setDate(String date) {
    Date = date;
}

public String getShift() {
    return Shift;
}

public void setShift(String shift) {
    Shift = shift;
}

public String getQty() {
    return Qty;
}

public void setQty(String qty) {
    Qty = qty;
}

public String getIncharge() {
    return Incharge;
}

public void setIncharge(String incharge) {
    Incharge = incharge;
}
}

ViewProduction.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.udayaj.sreeauto.ViewProduction">



<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    android:layout_marginStart="15dp"
    android:text="Date"
    android:textStyle="bold"
    android:textSize="20sp"
    android:id="@+id/textView2" />

<TextView
    android:id="@+id/textView4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_marginEnd="16dp"
    android:layout_toStartOf="@+id/incharge"
    android:text="Shift"
    android:textSize="20sp"
    android:textStyle="bold" />

<TextView
    android:id="@+id/textView3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentEnd="true"
    android:layout_alignParentTop="true"
    android:layout_marginEnd="30dp"
    android:text="Qty"
    android:textSize="20sp"
    android:textStyle="bold" />

<TextView
    android:id="@+id/incharge"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_alignStart="@+id/progress"
    android:layout_marginStart="27dp"
    android:text="Incharge"
    android:textSize="20sp"
    android:textStyle="bold" />


<ProgressBar
    android:id="@+id/progress"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"/>

<android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/incharge"
    android:id="@+id/recyclerji">

</android.support.v7.widget.RecyclerView>

<TextView
    android:id="@+id/txt_total"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_toStartOf="@+id/txt_total_value"
    android:text="Total : "
    android:textSize="20sp"
    android:textStyle="bold" />

<TextView
    android:id="@+id/txt_total_value"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignStart="@+id/textView3"
    android:text="00000"
    android:textSize="20sp" />




</RelativeLayout>

举个例子会很有帮助。谢谢。

【问题讨论】:

    标签: java android xml firebase firebase-realtime-database


    【解决方案1】:

    您似乎已经在循环数据,所以仍然需要提取值并将它们相加:

    mDatabaseRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            int sum = 0;
    
            for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                for (DataSnapshot dSnapshot : postSnapshot.getChildren()) {
                    Datastore upload = dSnapshot.getValue(Datastore.class);
                    mUploads.add(upload);
    
                    int value = Integer.parseInt(dSnapshot.child("qty").getValue(String.class));
                    sum += value;
                }
            }
    
            System.out.println(sum);
        }
    

    您的Datastore 类中可能已经有qty。但是由于您没有共享该代码,因此上述内容不依赖于此。

    考虑将qty 的值存储为数字。这将使Integer.parseInt 变得不必要并减少出现问题的机会。

    【讨论】:

    • 我添加了 Datastore.java。请给我正确的例子。我在 System.out.println(sum); 行中遇到错误;
    • logcat:java.lang.NullPointerException:尝试在 com.udayaj.sreeauto.ViewProduction$1.onDataChange 的空对象引用上调用虚拟方法“void android.widget.TextView.setText(int)” (ViewProduction.java:82)
    • @AndréKool 等待您的回复
    • @user9879624 该错误看起来与您问题中的代码完全无关。请使用相关代码、您尝试过的内容(此答案)以及失败的内容更新您的问题。您可以使用问题下方的edit 按钮来包含信息。
    • @AndréKool 我添加了。我需要在 txt_total_value 文本视图上显示总值。请给我一些例子。紧急。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-23
    • 1970-01-01
    相关资源
    最近更新 更多