Как получить текущего зарегистрированного пользователя с помощью getUid и отобразить его информацию в RecyclerView? - PullRequest
0 голосов
/ 10 мая 2018

Ниже моя структура базы данных

enter image description here

Я создал в представлении recyclerView, чтобы показать все заказы, сделанные пользователями. Представление переработчика работает нормально, но проблема в том, что он показывает все детали заказов, сделанных каждым пользователем. Я хочу отображать только бронирования, сделанные текущим вошедшим пользователем. Я создал userID с помощью getUid. Ниже приведен класс Model для извлечения данных из 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;
}
}

Ниже приведена основная активность, за которой следует java-класс recyclerviewHolder:

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);

}
}

Пожалуйста, помогите мне, это будет действительно оценено. Thankyou

1 Ответ

0 голосов
/ 10 мая 2018

Я не вижу, где вы запрашиваете базу данных Firebase, делаете ли вы это или нет. Насколько я вижу, вы не получаете данные из Firebase. Возможное решение - запросить таблицу "booking" с помощью userEmail и получить данные в соответствии с ней. Другое возможное решение - хранить переменную userId в классе «booking» и, конечно, в базе данных Firebase. Затем запросите таблицу "booking" с текущим пользователем uid .

...