android - 如何通过 getUid 获取当前登录用户并在 RecyclerView 上显示其信息?
问题描述
下面是我的数据库结构
我在活动中创建了一个 recyclerView 来显示用户进行的所有预订。回收站视图工作正常,但问题是它显示了每个用户预订的所有详细信息。我只想显示当前登录用户进行的预订。我已经通过 getUid 创建了用户 ID。以下是从 firebase 检索数据的模型类。
public class Booking {
private String userEmail;
private String NameOfPlace;
private String Slotnumber;
private String Duration;
private String StartTime;
private String Price;
private String currentDate;
public Booking() {
}
public Booking(String userEmail, String nameOfPlace, String slotnumber, String duration, String startTime, String price, String currentDate) {
this.userEmail = userEmail;
NameOfPlace = nameOfPlace;
Slotnumber = slotnumber;
Duration = duration;
StartTime = startTime;
Price = price;
this.currentDate = currentDate;
}
public String getUserEmail() {
return userEmail;
}
public void setUserEmail(String userEmail) {
this.userEmail = userEmail;
}
public String getNameOfPlace() {
return NameOfPlace;
}
public void setNameOfPlace(String nameOfPlace) {
NameOfPlace = nameOfPlace;
}
public String getSlotnumber() {
return Slotnumber;
}
public void setSlotnumber(String slotnumber) {
Slotnumber = slotnumber;
}
public String getDuration() {
return Duration;
}
public void setDuration(String duration) {
Duration = duration;
}
public String getStartTime() {
return StartTime;
}
public void setStartTime(String startTime) {
StartTime = startTime;
}
public String getPrice() {
return Price;
}
public void setPrice(String price) {
Price = price;
}
public String getCurrentDate() {
return currentDate;
}
public void setCurrentDate(String currentDate) {
this.currentDate = currentDate;
}
}
以下是主要活动,然后是 recyclerviewHolder java 类:
FirebaseDatabase mdatabase;
DatabaseReference refbooking;
RecyclerView recycler_booking;
RecyclerView.LayoutManager layoutManager;
FirebaseRecyclerAdapter<Booking, BookingViewHolder> adapter;
String uid;
FirebaseUser user;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v= inflater.inflate(R.layout.view_booking, null);
mdatabase=FirebaseDatabase.getInstance();
refbooking=mdatabase.getReference().child("Bookings");
user= FirebaseAuth.getInstance().getCurrentUser();
uid=user.getUid();
recycler_booking=(RecyclerView)v.findViewById(R.id.BookingRecyclerView);
recycler_booking.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(getActivity());
recycler_booking.setLayoutManager(layoutManager);
loadMenu();
return v;
}
private void loadMenu() {
adapter=new FirebaseRecyclerAdapter<Booking, BookingViewHolder>(Booking.class, R.layout.viewbooking_layout, BookingViewHolder.class, refbooking) {
@Override
protected void populateViewHolder(final BookingViewHolder viewHolder, final Booking model, int position) {
viewHolder.bookedplace.setText(model.getNameOfPlace());
viewHolder.bookedplace.setText(model.getNameOfPlace());
viewHolder.bookedslot.setText(model.getSlotnumber());
viewHolder.bookeddate.setText(model.getCurrentDate());
viewHolder.bookedduration.setText(model.getDuration());
viewHolder.bookedstarttime.setText(model.getStartTime());
}
};
recycler_booking.setAdapter(adapter);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
getActivity().setTitle("View Booking");
}
}
ViewHolder 类:
public class BookingViewHolder extends RecyclerView.ViewHolder {
public TextView bookedplace;
public TextView bookedslot;
public TextView bookeddate;
public TextView bookedduration;
public TextView bookedstarttime;
public BookingViewHolder(View itemView) {
super(itemView);
bookedplace= (TextView) itemView.findViewById(R.id.bookedplace);
bookedslot= (TextView) itemView.findViewById(R.id.bookedslot);
bookeddate= (TextView) itemView.findViewById(R.id.bookeddate);
bookedduration=(TextView) itemView.findViewById(R.id.bookedduration);
bookedstarttime= (TextView) itemView.findViewById(R.id.bookedstarttime);
}
}
请帮助我,这将不胜感激。谢谢
解决方案
我看不到您在哪里查询 Firebase 数据库,或者您是否这样做。据我所知,您没有从 Firebase 检索数据。可能的解决方案是使用userEmail查询您的“预订”表并根据它获取数据。另一种可能的解决方案是在“预订”类中为 userId 保存一个变量,当然在 Firebase 数据库中。然后使用当前用户的uid查询您的“预订”表。
推荐阅读
- c# - 使用 SqlCommand 在存储过程中获取底层执行查询
- asp.net - 为什么我的 .net core 3. 验证代码没有按预期工作?
- sql - 如果插入的值的长度小于列大小,则数据库填充空间 - DB2
- rust - 如何删除 OrbTk 中的小部件?
- logistic-regression - 如何解释 R 编程中的 oglmx 函数?
- macos - Mac 生成 ∆˚¬ 字符,而不是执行涉及 alt / option 键的 VSCode 快捷方式
- flutter - 在 flutter 中添加动态生成的超链接,而不是使用 CONST url?
- liferay - 我如何将主题从 6.2 升级到 7.2?
- python - Tensorflow Image CNN AutoEncoder 维度问题
- python - 无法在 Anaconda 环境中安装 geopandas