使用textView在Firebase数据库中显示数据是否有更短的方法?

时间:2018-06-02 13:27:17

标签: android firebase firebase-realtime-database

我有一个简单的责任,我想学点东西。 如何使用TextView在Firebase数据库中显示数据?

    mDatabase = FirebaseDatabase.getInstance().getReference("MyData");

    mDatabase.child("Dog").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String txt = dataSnapshot.getValue(String.class);
            Splash_Title.setText(txt);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

我可以用这种方法显示它,但我想知道是否有更短的方法。

我想用数据“Dog”获取TextView的值 提前谢谢。

{ "MyData" : { "Cat" : "x", "Dog" : "y" } }

1 个答案:

答案 0 :(得分:0)

正如弗兰克所说,你所做的是正确的,因为你指出MyData节点内只有1个值。如果您只需要获取该值,那么这可能很棒,但是如果您想从MyData对象获取所有值,您应该编写一个POJO类,然后使用foreach获取值,这将带给您所有来自MyData的值

mDatabase = FirebaseDatabase.getInstance().getReference("MyData");

    mDatabase.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DatasnapShot snapShot : dataSnapshot.getChildren())
            MyData md = snapShot.getValue(MyData.class);
            String dog = md.getDog(); //get dog name
            String cat = md.getCat(); // get cat name
            //And then just do a log to print or see those values
            Log.e("DogAndCatName",""+dog+cat);

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

并且您只需要另一个名为MyData.class

的POJO类

通过这个我们创建对象MyData来访问dataSnapshot请求中该对象的每个数据。

  public class MyData {

    private String Dog;
    private String Cat;

    public MyData() {
    }

    public String getDog() {
        return Dog;
    }

    public void setDog(String dog) {
        Dog = dog;
    }

    public String getCat() {
        return Cat;
    }

    public void setCat(String cat) {
        Cat = cat;
    }
}