【问题标题】:Retrieving database from Firebase without using ListView and set to the TexView?从 Firebase 检索数据库而不使用 ListView 并设置为 TexView?
【发布时间】:2017-02-26 15:08:34
【问题描述】:

我还是 Android 中的 Firebase 的新手,很难从 Firebase 数据库中检索数据。

我想检索特定数据库并将其设置为Textview,而不使用ListView

例如,我想检索用户名。这是 Firebase 节点结构:

我一直在寻找答案,但没有成功。

 mref=new Firebase("https://location-ac626.firebaseio.com");
    mref.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            user val = dataSnapshot.getValue(user.class);
            Log.d("users name : ",val.getname());
            namaprofil.setText(val.getname());
        }

这是我的用户代码:

    public class user {
    public String name, email, kota;

    public user() {
    }

    public user(String name, String email, String kota) {
        this.name = name;
        this.email = email;
        this.kota = kota;
    }

    public String getKota() {
        return kota ;
    }

    public void setKota(String kota) {
        this.kota = kota;
    }

    public String getname() {
        return name ;
    }

    public void setname(String name) {
    }

    public String getEmail() {
        return email ;
    }

    public void setEmail(String email) {
        this.email = email;
    }

}

【问题讨论】:

  • 有什么问题?
  • @FrankvanPuffelen 我想检索特定节点

标签: android firebase textview firebase-realtime-database


【解决方案1】:

试试这个

FirebaseDatabase mDatabase = FirebaseDatabase.getInstance();
DatabaseReference mRef = mDatabase.getReference("universities");
mRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
            User val = snapshot.getValue(User.class);
            Log.d("users name : ", val.getname());
            namaprofil.setText(val.getname());
        }
    }
    @Override
    public void onCancelled(DatabaseError error) {
        Log.w("ERROR", "Error", error.toException());
    }
});

【讨论】:

  • addValueEventListener 更改为 addListenerForSingleValueEvent ` by
【解决方案2】:
Firebase ref;
Firebase.setAndroidContext(getActivity());
ref = new Firebase(YOUR_FIREBASE_URL);

-------对于单个值----------

ref.child("universities/-KNk0.....")
    .addListenerForSingleValueEvent(new ValueEventListener() {
      @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
          try {
            if (dataSnapshot.getValue() != null) {
               Map<String, Object> value = (Map<String, Object>) dataSnapshot.getValue();
               namaprofil.setText(value.get("name") );
               }
             } catch (Exception e) {
                 e.printStackTrace();
          }
     }
   @Override
     public void onCancelled(FirebaseError firebaseError) {
      }
     });

------对于多个值--------------

ref.child("universities").addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot snapshot, String s) {
                if (snapshot.getValue() != null
                        && snapshot.getKey().startsWith("-")) {

                    Map<String, Object> value = (Map<String, Object>) snapshot.getValue();
                    String Name =value.get("name").toString(); // you will get name one by one
                    Log.e("!_@@_Name-:-> ",Name);
                }
            }

            @Override
            public void onChildChanged(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onChildRemoved(DataSnapshot dataSnapshot) {

            }

            @Override
            public void onChildMoved(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onCancelled(FirebaseError firebaseError) {

            }
        });

【讨论】:

    猜你喜欢
    • 2018-12-26
    • 2019-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    • 2020-07-22
    相关资源
    最近更新 更多