Firebase - 从数据库中检索用户信息 [英] Firebase - Retrieve User Information from Database

查看:97
本文介绍了Firebase - 从数据库中检索用户信息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述





DriverDatabase.class 我已经设置(fName,lName ....和其他字段)。另外,把 {get;
$ b

AddInfoDriver.class 中我引用了 FirebaseDatabase DriverDatabase.class ,这样,只要用户填充这些edittext,它就会保存到Firebase数据库。



问题是:我无法检索 DriverProfile.class中的5个Edittext值下面是检索的代码片段。

  public class DriverProfile extends Fragment {

@BindView R.id.btn_save)按钮btnsave;
@BindView(R.id.edtx_DoB)EditText edtxdob;
@BindView(R.id.edtx_fname)EditText edtx_fname;
@BindView(R.id.edtx_lname)EditText edtx_lname;
@BindView(R.id.spinner_type)Spinner spn_type;
@BindView(R.id.edtx_number)EditText edtx_number;

private DatabaseReference driverfname,driverlname;

$ b公共DriverProfile(){
//构造是必需的

}

@Override
public查看onCreateView(LayoutInflater inflater,ViewGroup容器,
Bundled savedInstanceState){

查看视图= inflater.inflate(R.layout.fragment_my_profile,container,false);
ButterKnife.bind(this,view);

driverfname = FirebaseDatabase.getInstance()。getReference()。child(Drivers)。child(fname);
driverlname = FirebaseDatabase.getInstance()。getReference()。child(Drivers)。child(lname);

driverfname.addValueEventListener(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot){
edtx_fname.setText(dataSnapshot.getValue(String.class ));
}

@Override
public void onCancelled(DatabaseError databaseError){


});

没有写出所有的edittext代码,只看到我的 ValueEventListener 为驱动程序的fname。它在驱动程序保存在子(Drivers)中时不显示数据

解决方案<为了得到所有驱动程序的值,请使用以下代码:
$ b $ pre $ DatabaseReference rootRef = FirebaseDatabase.getInstance() .getReference();
DatabaseReference driversRef = rootRef.child(Drivers);
ValueEventListener eventListener = new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot){
for(DataSnapshot ds:dataSnapshot.getChildren()){
字符串cardNumber = ds.child(cardNumber)。getValue(String.class);
字符串cardType = ds.child(cardType)。getValue(String.class);
String dateOfBirth = ds.child(dateOfBirth)。getValue(String.class);
String name = ds.child(name)。getValue(String.class);
String surname = ds.child(surname)。getValue(String.class);
Log.d(TAG,cardNumber +/+ cardType +/+ dateOfBirth +/+ name +/+ surname);
}
}

@Override
public void onCancelled(DatabaseError databaseError){}
};
driversRef.addListenerForSingleValueEvent(eventListener);


> I have 3 classes.

  • DriverDatabase.class
  • AddInfoDriver.class
  • DriverProfile.class

In DriverDatabase.class I have set(fName, lName .... and other fields.). Also, put {get; and set;} for those attribtues.

In AddInfoDriver.class I have referenced FirebaseDatabase and DriverDatabase.class so that, whenever a user fills those edittexts, it saves to Firebase Database.

The Problem is: I cannot retrieve those 5 Edittext values in DriverProfile.class below is the piece of code for retrieving.

public class DriverProfile extends Fragment {

@BindView(R.id.btn_save) Button btnsave;
@BindView(R.id.edtx_DoB) EditText edtxdob;
@BindView(R.id.edtx_fname) EditText edtx_fname;
@BindView(R.id.edtx_lname) EditText edtx_lname;
@BindView(R.id.spinner_type) Spinner spn_type;
@BindView(R.id.edtx_number) EditText edtx_number;

private DatabaseReference driverfname, driverlname;


public DriverProfile() {
//Constructed is required

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.fragment_my_profile, container, false);
    ButterKnife.bind(this, view);

    driverfname = FirebaseDatabase.getInstance().getReference().child("Drivers").child("fname");
    driverlname  = FirebaseDatabase.getInstance().getReference().child("Drivers").child("lname");

    driverfname.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            edtx_fname.setText(dataSnapshot.getValue(String.class));
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

Didnt write all edittext codes, just see my ValueEventListener for fname of Driver. it is not displaying data when saved by driver in a child("Drivers")

解决方案

To get the values from all drivers please use the following code:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference driversRef = rootRef.child("Drivers");
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String cardNumber = ds.child("cardNumber").getValue(String.class);
            String cardType = ds.child("cardType").getValue(String.class);
            String dateOfBirth = ds.child("dateOfBirth").getValue(String.class);
            String name = ds.child("name").getValue(String.class);
            String surname = ds.child("surname").getValue(String.class);
            Log.d("TAG", cardNumber + " / " + cardType + " / " + dateOfBirth + " / " + name + " / " + surname);
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
driversRef.addListenerForSingleValueEvent(eventListener);

这篇关于Firebase - 从数据库中检索用户信息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆