Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的Firebase数据库为每个成员属性返回null_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java 我的Firebase数据库为每个成员属性返回null

Java 我的Firebase数据库为每个成员属性返回null,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我创建了一个Firebase数据库来存储成员,就像联系人一样,我正在尝试获取数据库中存储的所有成员属性。现在,成员列表正在正确获取,但成员详细信息(如电话,电子邮件等)返回空。请帮帮我 这是Firebase数据库结构: 这是我获取成员列表的代码: members = new ArrayList<>(); member = new Member(); adapter = new AllMembersAdapter(members, this); databa

我创建了一个Firebase数据库来存储成员,就像联系人一样,我正在尝试获取数据库中存储的所有成员属性。现在,成员列表正在正确获取,但成员详细信息(如
电话
电子邮件
等)返回
。请帮帮我

这是Firebase数据库结构:

这是我获取成员列表的代码:

members = new ArrayList<>();
    member = new Member();
    adapter = new AllMembersAdapter(members, this);

    database = FirebaseDatabase.getInstance();
    databaseReference = database.getReference().child("Rad5 Tech Hub");

    databaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            members.clear();

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

                member = ds.getValue(Member.class);
                Log.d("debugger", "member email: " + member.getEmail()); //returns null
                members.add(member);

            }

            recyclerViewList.setAdapter(adapter);
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
members=newarraylist();
成员=新成员();
适配器=新的AllMembersAdapter(成员,此);
database=FirebaseDatabase.getInstance();
databaseReference=database.getReference().child(“Rad5技术中心”);
databaseReference.addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
成员。清除();
对于(DataSnapshot ds:DataSnapshot.getChildren()){
member=ds.getValue(member.class);
Log.d(“调试器”,“成员电子邮件:+member.getEmail());//返回null
成员。添加(成员);
}
RecycleServiceWList.setAdapter(适配器);
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
这是我的会员班

public class Member {

private String mMonthName;
private String mLastName;
private String mGender;
private String mEmail;
private String mPhone;
private String mAddress;
private String mDate;
private String mOccupation;

public Member(){}

public Member(String mAddress, String mDate, String mEmail, String mGender,
              String mLastName, String mMonthName, String mOccupation, String mPhone) {
    this.mLastName = mLastName;
    this.mGender = mGender;
    this.mEmail = mEmail;
    this.mPhone = mPhone;
    this.mAddress = mAddress;
    this.mDate = mDate;
    this.mOccupation = mOccupation;
    this.mMonthName = mMonthName;
}

public String getLastName() {
    return mLastName;
}

public String getGender() {
    return mGender;
}

public String getEmail() {
    return mEmail;
}

public String getPhone() {
    return mPhone;
}

public String getAddress() {
    return mAddress;
}

public String getDate() {
    return mDate;
}

public String getMonthName() {
    return mMonthName;
}

public String getOccupation() {
    return mOccupation;
}

public Map<String, Object> toMap(){
    HashMap<String, Object> result = new HashMap<>();
    result.put("address", mAddress);
    result.put("birthday", mDate);
    result.put("email", mEmail);
    result.put("gender", mGender);
    result.put("last name", mLastName);
    result.put("month name", mMonthName);
    result.put("occupation", mOccupation);
    result.put("phone number", mPhone);

    return result;
}
公共类成员{
私有字符串名称;
私有字符串mLastName;
私有字符串管理器;
私有字符串mEmail;
专用字符串mPhone;
私服;
私有字符串mDate;
私家侦探;
公共成员(){}
公共成员(字符串mAddress、字符串mDate、字符串mEmail、字符串mGender、,
字符串mLastName、字符串AMNOTHNAME、字符串MOCUPATION、字符串mPhone){
this.mLastName=mLastName;
this.mGender=mGender;
this.mEmail=mEmail;
this.mPhone=mPhone;
this.mAddress=mAddress;
this.mDate=mDate;
this.mOccupation=mOccupation;
this.mMonthName=mMonthName;
}
公共字符串getLastName(){
返回mLastName;
}
公共字符串getGender(){
返料机;
}
公共字符串getEmail(){
返回mEmail;
}
公共字符串getPhone(){
返回mPhone;
}
公共字符串getAddress(){
回归疯狂;
}
公共字符串getDate(){
返回mDate;
}
公共字符串getMonthName(){
返回名称;
}
公共字符串getOccupation(){
回归分析;
}
公共地图toMap(){
HashMap结果=新建HashMap();
结果。放入(“地址”,mAddress);
结果。放置(“生日”,mDate);
结果。输入(“电子邮件”,mEmail);
结果。put(“性别”,mGender);
结果。输入(“姓氏”,mLastName);
结果.输入(“月名”,月名);
结果。放置(“职业”,移动);
结果。输入(“电话号码”,mPhone);
返回结果;
}
}

以下是我的适配器类:

public class AllMembersAdapter extends RecyclerView.Adapter<AllMembersAdapter.MembersViewHolder> {

ArrayList<Member> members;
ListItemClickListener listItemClickListener;

public AllMembersAdapter(ArrayList<Member> members, ListItemClickListener listItemClickListener) {
    this.members = members;
    this.listItemClickListener = listItemClickListener;
}

@NonNull
@Override
public MembersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    Context context = parent.getContext();
    LayoutInflater inflater = LayoutInflater.from(context);

    View view = inflater.inflate(R.layout.member_item, parent, false);
    return new MembersViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull MembersViewHolder holder, int position) {
    Member member = members.get(position);
    String _monthName = member.getMonthName();

    holder.mMonth.setText(_monthName);
    holder.mName.setText(member.getLastName());
    holder.mDate.setText(member.getDate());
}

@Override
public int getItemCount() {
    return members.size();
}

public interface ListItemClickListener{
    void onListItemClick(int position);
}

public class MembersViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

    TextView mMonth;
    TextView mName;
    TextView mDate;

    public MembersViewHolder(View itemView) {
        super(itemView);

        mMonth = (TextView) itemView.findViewById(R.id.txt_month);
        mName = (TextView) itemView.findViewById(R.id.txt_name);
        mDate = (TextView) itemView.findViewById(R.id.txt_date);
        itemView.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        listItemClickListener.onListItemClick(getAdapterPosition());
    }
}
public类AllMembersAdapter扩展了RecyclerView.Adapter{
ArrayList成员;
ListItemClickListener ListItemClickListener;
public AllMembersAdapter(ArrayList成员,ListItemClickListener ListItemClickListener){
这个.成员=成员;
this.listItemClickListener=listItemClickListener;
}
@非空
@凌驾
public MembersViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int viewType){
Context=parent.getContext();
LayoutFlater充气机=LayoutFlater.from(上下文);
视图=充气机。充气(R.layout.member\u项,父项,false);
返回新成员查看文件夹(视图);
}
@凌驾
public void onBindViewHolder(@NonNull MembersViewHolder,int位置){
Member=members.get(位置);
字符串_monthName=member.getMonthName();
holder.month.setText(_monthName);
holder.mName.setText(member.getLastName());
holder.mDate.setText(member.getDate());
}
@凌驾
public int getItemCount(){
返回成员。size();
}
公共接口ListItemClickListener{
void onListItemClick(内部位置);
}
公共类MembersViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{
文本视图;
文本视图mName;
文本视图mDate;
公共成员查看文件夹(查看项目视图){
超级(项目视图);
mMonth=(TextView)itemView.findViewById(R.id.txt\u月);
mName=(TextView)itemView.findViewById(R.id.txt\u name);
mDate=(TextView)itemView.findViewById(R.id.txt\u日期);
setOnClickListener(这个);
}
@凌驾
公共void onClick(视图v){
listItemClickListener.onListItemClick(getAdapterPosition());
}
}

}

正如@TheTechWolf在他的评论中提到的,问题在于
成员
类字段与Firebase数据库中的字段名称不同。让我们举一个例子,在模型类中有一个名为
monthname
的字段,但在数据库中相应的字段名为
month name
。当您使用名为
getMonthName()
的getter时,Firebase正在查看名为
monthName
的字段,而不是您现在看到的
monthName
。因此,要解决此问题,请使用以下模型类,其中包含您需要的所有成员字段:

public class Member {
    private String monthName, lastName, gender, email, phone, address, date, occupation;

    public Member() {}

    public Member(String monthName, String lastName, String gender, String email, String phone, String address, String date, String occupation) {
        this.monthName = monthName;
        this.lastName = lastName;
        this.gender = gender;
        this.email = email;
        this.phone = phone;
        this.address = address;
        this.date = date;
        this.occupation = occupation;
    }

    public String getMonthName() { return monthName; }
    public String getLastName() { return lastName; }
    public String getGender() { return gender; }
    public String getEmail() { return email; }
    public String getPhone() { return phone; }
    public String getAddress() { return address; }
    public String getDate() { return date; }
    public String getOccupation() { return occupation; }
}

正如@TheTechWolf在他的评论中提到的,问题在于
成员
类字段与Firebase数据库中的字段名称不同。让我们举一个例子,在模型类中有一个名为
monthname
的字段,但在数据库中相应的字段名为
month name
。当您使用名为
getMonthName()
的getter时,Firebase正在查看名为
monthName
的字段,而不是您现在看到的
monthName
。因此,要解决此问题,请使用以下模型类,其中包含您需要的所有成员字段:

public class Member {
    private String monthName, lastName, gender, email, phone, address, date, occupation;

    public Member() {}

    public Member(String monthName, String lastName, String gender, String email, String phone, String address, String date, String occupation) {
        this.monthName = monthName;
        this.lastName = lastName;
        this.gender = gender;
        this.email = email;
        this.phone = phone;
        this.address = address;
        this.date = date;
        this.occupation = occupation;
    }

    public String getMonthName() { return monthName; }
    public String getLastName() { return lastName; }
    public String getGender() { return gender; }
    public String getEmail() { return email; }
    public String getPhone() { return phone; }
    public String getAddress() { return address; }
    public String getDate() { return date; }
    public String getOccupation() { return occupation; }
}
成员类字段应与要检索的firebase字段具有相同的名称。因此,与其将参数命名为
mEmail
,不如将其命名为
email