如何从firebase数据库中提取数据并使用该数据执行进一步的操作?

时间:2018-02-17 12:32:16

标签: android firebase-realtime-database

    public class Hospitals extends AppCompatActivity {

        private DatabaseReference mDatabase;
        private String []hospitals;
        private String []links;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_hospitals);
            mDatabase= FirebaseDatabase.getInstance().getReference().child("Hospitals");
            mDatabase.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    String total=dataSnapshot.child("total").getValue().toString();
                    hospitals=new String[Integer.parseInt(total)];
                    links=new String[Integer.parseInt(total)];
                }
                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });
            Toast.makeText(Hospitals.this,String.valueOf(hospitals.length),Toast.LENGTH_LONG).show();
}

这是数据库,我想提取存储在密钥“total”中的值2:

image

所有依赖项都已正确设置,其他与数据库相关的操作正常运行。

1 个答案:

答案 0 :(得分:0)

要解决此问题,请更改以下代码行:

√

String total=dataSnapshot.child("total").getValue().toString();

您的代码中的问题是,您可以从数据库获取数据,而String类则将数据存储为整数。

修改

根据您的评论,您的Toast在该位置不起作用,因为int total=dataSnapshot.child("total").getValue(Integer.class); 方法具有异步行为,这意味着当您尝试向该消息干杯时,数据尚未从数据库。快速解决这个问题的方法是在onDataChange()方法中使用Toast only ,或者如果你想在外面使用它,你需要创建自己的回调,为此,我建议你会从 post 中看到我答案的最后一部分。