我正在尝试从RealTime-Database中检索具有其名字和名字的用户列表,但是什么也没有出现。
UsersActivity类显示数据库中的所有用户。我尝试了很多教程,但似乎无济于事。
public class UsersActivity extends AppCompatActivity {
private RecyclerView userslist;
private DatabaseReference ref;
private List<Users> mUsers;
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate ( savedInstanceState );
setContentView ( R.layout.activity_users );
ref = FirebaseDatabase.getInstance ().getReference ().child ( "FirstName" );
userslist = (RecyclerView) findViewById ( R.id.users_list );
userslist.setHasFixedSize ( true );
userslist.setLayoutManager ( new LinearLayoutManager ( this ) );
}
public void readUsers(){
FirebaseUser firebaseUser= FirebaseAuth.getInstance ().getCurrentUser ();
DatabaseReference reference=FirebaseDatabase.getInstance ().getReference ("spors-budy-en866");
reference.addValueEventListener ( new ValueEventListener () {
@Override
public void onDataChange (@NonNull DataSnapshot dataSnapshot) {
}
@Override
public void onCancelled (@NonNull DatabaseError databaseError) {
}
} )
}
@Override
protected void onStart () {
super.onStart ();
FirebaseRecyclerOptions<Users> options = new FirebaseRecyclerOptions.Builder<Users> ()
.setQuery ( ref, Users.class )
.build ();
FirebaseRecyclerAdapter<Users, FindFriendViewHolder> adapter = new FirebaseRecyclerAdapter<Users, FindFriendViewHolder> ( options ) {
@Override
protected void onBindViewHolder (@NonNull FindFriendViewHolder findFriendViewHolder, int i, @NonNull Users users) {
findFriendViewHolder.userName.setText ( users.getName () );
}
@NonNull
@Override
public FindFriendViewHolder onCreateViewHolder (@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from ( parent.getContext () ).inflate ( R.layout.users_template, parent, false );
FindFriendViewHolder viewHolder = new FindFriendViewHolder ( view );
return viewHolder;
}
};
userslist.setAdapter ( adapter );
adapter.startListening ();
}
public static class FindFriendViewHolder extends RecyclerView.ViewHolder {
TextView userName;
ImageView profileImage;
public FindFriendViewHolder (@NonNull View itemView) {
super ( itemView );
userName = itemView.findViewById ( R.id.username1 );
profileImage = itemView.findViewById ( R.id.profilepicture );
}
}
}
我的数据库规则:
{
"rules": {
".read": "true",
".write":"true",
"users":{
"$user_id":{
".read": "auth.uid === $user_id",
".write": "auth.uid === $user_id"
}
}
}
}
我希望显示我数据库中的所有用户。但是活动为空。
答案 0 :(得分:3)
您正在设置:
import
然后使用它来初始化FirebaseUI适配器:
ref = FirebaseDatabase.getInstance().getReference().child("FirstName");
虽然我不知道您的数据模型,但似乎不太可能在FirebaseRecyclerOptions<Users> options = new FirebaseRecyclerOptions.Builder<Users> ()
.setQuery(ref, Users.class )
下拥有用户列表,这是使用FirebaseUI适配器显示这些用户所必需的。
更可能将ref初始化为:
/FirstName
答案 1 :(得分:1)
1- ref=firebaseDatabase.getReference("FirstName");
2- ref.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
//**HERE WHERE YOU SHOULD FETCH THE DATA FROM YOUR DATABASE**
String value=dataSnapshot.getValue(String.class);
list.add(value);
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
list.clear();
String value=dataSnapshot.getValue(String.class);
list.add(value);
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});