如何仅从 Firebase 获取登录用户的详细信息,并仅使用该信息填充查看者



我想知道如何只用当前登录用户从Firebase获取数据的详细信息填充此视图。我不知道从哪里开始。

public class UsersViewHolder extends RecyclerView.Adapter<UsersViewHolder.ViewHolder> {
private Context context;
private List<Users> UserList;
public UsersViewHolder(Context context, List<Users> uList) {
this.context = context;
this.UserList = ulist;
}
@Override
public UsersViewHolder.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).
inflate(R.layout.activity_mydetails,parent,false);
return new UsersViewHolder.ViewHolder(view ,context);
}
@Override
public void onBindViewHolder(UsersViewHolder.ViewHolder holder, final int position) {
final Users users =UserList.get(position);

holder.UserFirstName.setText(users.getUserfirstname());
holder.UserSurname.setText(users.getUserlastname());
holder.UserAddress.setText(users.getUseraddress());
holder.UserPostcode.setText(users.getUserpostcode());
holder.UserColourPreference.setText(users.getUsercolourpreference());
holder.UserShoeSize.setText(users.getUsershoesize());
holder.UserTopSize.setText(users.getUsertopsize());
holder.UserWaistSize.setText(users.getUserwaistsize());
}
@Override
public int getItemCount() {
return UserList.size();//Returns all values
}

public class ViewHolder extends RecyclerView.ViewHolder {
private TextView UserFirstName,UserSurname,UserAddress,UserPostcode,UserColourPreference,UserShoeSize,UserTopSize,UserWaistSize;
String Userid;
public  ViewHolder(View view,Context state){
super (view);
context =state;
UserFirstName = view.findViewById(R.id.FirstNameID);
UserSurname =view.findViewById(R.id.SurnameID);
UserAddress =view.findViewById(R.id.AddressID);
UserPostcode=view.findViewById(R.id.PostcodeID);
UserColourPreference=view.findViewById(R.id.ColourPreferenceSpinnerID);
UserShoeSize=view.findViewById(R.id.ShoeSizeSpinnerID);
UserTopSize=view.findViewById(R.id.TopSizeSpinnerID);
UserWaistSize=view.findViewById(R.id.WaistSizeSpinnerID);
Userid = null;
}
}
}

适配器

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mydetails);
FirebaseUserAuthentication = FirebaseAuth.getInstance();
FirebaseUserLoggedIn= FirebaseUserAuthentication.getCurrentUser();
UserDatabase = FirebaseDatabase.getInstance();
UserDatabaseref = UserDatabase.getReference().child("Threads Users");
UserDatabaseref.keepSynced(true);
UserDetails = new ArrayList<>();
PopulateListView = findViewById(R.id.RecyclerViewOBJ);
PopulateListView.setHasFixedSize(true);
PopulateListView.setLayoutManager(new LinearLayoutManager(this));
//PopulateListView.setReverseLayout(True);
}
@Override
protected void onStart()
{
super.onStart();
UserDatabaseref.addChildEventListener(new ChildEventListener()
{
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Users details =  dataSnapshot.getValue(Users.class);
UserDetails.add(details);
Collections.reverse(UserDetails);
Uviewholder = new UsersViewHolder(mydetails.this,UserDetails);
PopulateListView.setAdapter(Uviewholder);
Uviewholder.notifyDataSetChanged();
}

你可以这样做:

UserDatabaseref.addChildEventListener(new ChildEventListener()
{
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Users details =  dataSnapshot.getValue(Users.class);
If(dataSnapshot.getKey().equals(FirebaseUserLoggedIn.getUid())){
UserDetails.add(details);
}
Collections.reverse(UserDetails);
Uviewholder = new UsersViewHolder(mydetails.this,UserDetails);
PopulateListView.setAdapter(Uviewholder);
Uviewholder.notifyDataSetChanged();
}

这样,只有当检索到的用户的 ID 与登录用户的 ID 匹配时,它才会添加到将传递给视图持有者的数据源中。现在,您的视图持有者将只能显示有关登录用户的信息。

最新更新