在firebase android开发中通过循环从子节点检索特定数据

我正在尝试从 firebase 数据库中获取特定值。请先查看代码。这是数据库参考


DatabaseReference databasedeposit= FirebaseDatabase.getInstance().getReference("Deposit");



totalb.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View view) {


            databasedeposit.addListenerForSingleValueEvent (new ValueEventListener() {

                @Override

                public void onDataChange(DataSnapshot dataSnapshot) {


                    abc.clear();

                    Integer total = 0;


                    for (DataSnapshot ds : dataSnapshot.getChildren()) {

                        ADeposit bazar = ds.getValue(ADeposit.class);

                        Integer cost = Integer.valueOf(bazar.getAmount());

                        total = total + cost;

                        abc.add(bazar);


                    }


                    Query queryn=databasedeposit.orderByChild("name").equalTo("Rabbani");


                    queryn.addListenerForSingleValueEvent(new ValueEventListener() {

                        @Override

                        public void onDataChange(DataSnapshot dataSnapshot) {

                            Integer n_total=0;


                            for (DataSnapshot ds : dataSnapshot.getChildren()) {

                                ADeposit bazar = ds.getValue(ADeposit.class);

                                Integer c = Integer.valueOf(bazar.getAmount());

                                n_total = n_total + c;

                            }

                        }


                        @Override

                        public void onCancelled(DatabaseError databaseError) {


                        }

                    });

                    DepositList adapter = new DepositList(admininterface.this,abc);

                    deposit.setAdapter(adapter);

        }

    });



}

现在总成本很容易计算出来。但是来自用户的特定数据,例如此处的“Rabbani”,用于检索他的总金额我创建了一个查询,但我无法从对话框之类的部分访问 n_total 值。


看一下数据库结构:

http://img2.mukewang.com/639a8ee200011b6305110601.jpg

拉丁的传说
浏览 73回答 1
1回答

蛊毒传说

您不需要嵌套的侦听器来获取Rabbani支出。由于此数据已存在于 中databasedeposit,因此您可以if在现有循环中使用 来跟踪该数据:databasedeposit.addListenerForSingleValueEvent (new ValueEventListener() {    @Override    public void onDataChange(DataSnapshot dataSnapshot) {        abc.clear();        Integer total = 0;        Integer n_total=0;        for (DataSnapshot ds : dataSnapshot.getChildren()) {            ADeposit bazar = ds.getValue(ADeposit.class);            Integer cost = Integer.valueOf(bazar.getAmount());            total = total + cost;            abc.add(bazar);            if ("Rabbani".equals(ds.child("name").getValue(String.class)) {                n_total = n_total + cost;            }        }        System.out.println("total: "+total+", n_total: "+n_total);        ...    }    @Override    public void onCancelled(DatabaseError databaseError) {        throw databaseError.toException(); // don't ignore errors    }}); ;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java