最近在Firebase数据库结构中添加了一个子项,无法再使用

时间:2018-06-20 18:05:25

标签: android firebase firebase-realtime-database

AllUsers类

public class AllUsers {

    private String Name;
    private String Status;
    private String Image;

    public AllUsers (){
    }

    public AllUsers(String name, String status, String Image) {
        Name = name;
        Status = status;
        Image = Image;
    }

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public String getStatus() {
        return Status;
    }

    public void setStatus(String status) {
        Status = status;
    }

    public String getImage() {
        return Image;
    }

    public void setImage(String image) {
        Image = image;
    }
}

片段

 public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    rootView = inflater.inflate(R.layout.fragment_contacts, container, false);


    noUsersText = (TextView) rootView.findViewById(R.id.noUsersText);
    mUsersList = (RecyclerView) rootView.findViewById(R.id.usersList);

    mAuth = FirebaseAuth.getInstance();
    currentUser = mAuth.getCurrentUser();
    UID = mAuth.getCurrentUser().getUid();
    mDatabaseReference = FirebaseDatabase.getInstance().getReference().child("Users");


    mProgressDialogue = new ProgressDialog(getActivity());
    mProgressDialogue.setMessage("Loading...");
    mProgressDialogue.show();


    mUsersList.setLayoutManager(new LinearLayoutManager(getActivity()));

    FirebaseRecyclerOptions<AllUsers> options =
            new FirebaseRecyclerOptions.Builder<AllUsers>()
                    .setQuery(mDatabaseReference, AllUsers.class)
                    .build();

    firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<AllUsers, UsersViewHolder>(options) {

        @Override
        protected void onBindViewHolder(@NonNull UsersViewHolder holder, int position, @NonNull AllUsers model) {
            holder.setName(model.getName());
            holder.setStatus(model.getStatus());

            final String userId = getRef(position).getKey();

            holder.mView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference().child("Users").child(userId).child("Data");

                    rootRef.addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {
                            userName = dataSnapshot.child("Name").getValue().toString();
                            Intent intent = new Intent(getActivity(), Chat.class);
                            intent.putExtra("Recievers_Id", userId);
                            intent.putExtra("Recievers_Name", userName);
                            startActivity(intent);
                        }
                        @Override
                        public void onCancelled(DatabaseError databaseError) {
                        }
                    });
                }
            });
        }


        @Override
        public UsersViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.all_users_layout, parent, false);
            return new UsersViewHolder(view);
        }
    };
    mUsersList.setAdapter(firebaseRecyclerAdapter);
    return rootView;
}


public static class UsersViewHolder extends RecyclerView.ViewHolder{
    View mView;
    public UsersViewHolder(View itemView) {
        super(itemView);
        mView = itemView;
    }
    public void setName(String name) {
        TextView mDisplayName = (TextView) mView.findViewById(R.id.display_name);
        mDisplayName.setText(name);
    }
    public void setStatus(String status) {
        TextView mDisplayStatus = (TextView) mView.findViewById(R.id.display_status);
        mDisplayStatus.setText(status);
    }
}


@Override
public void onStart() {
    super.onStart();
    firebaseRecyclerAdapter.startListening();
}
@Override
public void onStop() {
    super.onStop();
    if(firebaseRecyclerAdapter != null) {
        firebaseRecyclerAdapter.stopListening();
    }
}

数据库结构-https://ibb.co/i70DSy

在我拥有所有数据之前,该数据都在唯一的id子元素内。我只是想使其更具可读性,所以我在唯一ID下添加了一个名为data的子项,并在其中存储了所有数据。但是数据不再显示了。我已经做了很多尝试来弄清楚,甚至没有任何错误显示。它只是显示空白屏幕,如果我单击应该显示数据的屏幕,则单击侦听器正在将我带到下一个活动。

有人可以帮我吗?

数据库

{
"Chat" : {
"VwtdCRK0aXQ2bnKe01fy8mYUPqs2" : {
  "VwtdCRK0aXQ2bnKe01fy8mYUPqs2" : {
    "Seen" : false,
    "Timestamp" : 1529515719074
  }
  }
 },
"Users" : {
"VwtdCRK0aXQ2bnKe01fy8mYUPqs2" : {
  "Data" : {
    "Image" : "https://firebasestorage.googleapis.com/v0/b/messageplus-cd647.appspot.com/o/Raw%2FVwtdCRK0aXQ2bnKe01fy8mYUPqs2.jpg?alt=media&token=a385e502-1068-4efc-a2d8-bd9037201b5f",
    "Name" : "Akash R",
    "Phone_Number" : "8105571584",
    "Status" : "None of your business",
    "Thumb_image" : "Default",
    "Unique" : "VwtdCRK0aXQ2bnKe01fy8mYUPqs2"
  },
  "Quiz" : {
    "Question1" : {
      "Answer" : "fd",
      "Option1" : "123",
      "Option2" : "qz",
      "Option3" : "fd",
      "Option4" : "fd",
      "Question" : "1"
    },
    "Question10" : {
      "Answer" : "d",
      "Option1" : "v",
      "Option2" : "s",
      "Option3" : "b",
      "Option4" : "d",
      "Question" : "10"
    },
    "Question2" : {
      "Answer" : "dh",
      "Option1" : "fj",
      "Option2" : "dh",
      "Option3" : "dhd",
      "Option4" : "dbdb",
      "Question" : "2"
    },
    "Question3" : {
      "Answer" : "ss",
      "Option1" : "dn",
      "Option2" : "vv",
      "Option3" : "ss",
      "Option4" : "df",
      "Question" : "3"
    },
    "Question4" : {
      "Answer" : "bd",
      "Option1" : "cbd",
      "Option2" : "fdgb",
      "Option3" : "xv",
      "Option4" : "bd",
      "Question" : "4"
    },
    "Question5" : {
      "Answer" : "b",
      "Option1" : "dh",
      "Option2" : "c",
      "Option3" : "b",
      "Option4" : "d",
      "Question" : "5"
    },
    "Question6" : {
      "Answer" : "dhs",
      "Option1" : "janf",
      "Option2" : "shs",
      "Option3" : "dgd",
      "Option4" : "dhs",
      "Question" : "6"
    },
    "Question7" : {
      "Answer" : "c",
      "Option1" : "dhsh",
      "Option2" : "fhsnx",
      "Option3" : "c",
      "Option4" : "cndnx",
      "Question" : "7"
    },
    "Question8" : {
      "Answer" : "cg",
      "Option1" : "bs",
      "Option2" : "ccb",
      "Option3" : "cg",
      "Option4" : "fs",
      "Question" : "8"
    },
    "Question9" : {
      "Answer" : "vb",
      "Option1" : "dhds",
      "Option2" : "cc",
      "Option3" : "cs",
      "Option4" : "vb",
      "Question" : "9"
    },
    "Results" : {
      "VwtdCRK0aXQ2bnKe01fy8mYUPqs2" : {
        "Akash R" : "3"
      }
    }
  },
  "Reviews" : {
    "Review" : "Hiiii"
  }
}

} }

1 个答案:

答案 0 :(得分:0)

为此,您必须将数据库引用更改为-

mDatabaseReference = FirebaseDatabase.getInstance().getReference().child("Users").child(userId);

例如:-

mDatabaseReference = FirebaseDatabase.getInstance().getReference().child("Users").child("VwtdCRK0aXQ2bnKe01fy8mYUPqs2");