首页 > 解决方案 > 如何查询当前登录患者的数据以仅查看医生的预约

问题描述

目前,我可以列出医生为所有患者所做的所有预约。但我需要设置为当前登录系统的患者只能看到他的预约,只有他的名字。我如何查询它?我正在使用firebase实时数据库和android studio。

我查看患者预约的代码:

package com.example.myapplication;

import android.os.Bundle;
import android.app.Activity;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.widget.SearchView;
import android.widget.Toast;

import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.util.ArrayList;

public class patapp extends Activity {
    DatabaseReference ref;
    ArrayList<Booking> list1;
    RecyclerView recyclerView;
    SearchView searchView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_patapp);
        ref = FirebaseDatabase.getInstance().getReference().child("Bookings");
        recyclerView = findViewById(R.id.rvpat);
        searchView = findViewById(R.id.svp);
    }

    @Override
    protected void onStart() {
        super.onStart();
        if (ref != null)
        {
            ref.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    if (dataSnapshot.exists())
                    {
                        list1 = new ArrayList<>();
                        for (DataSnapshot ds : dataSnapshot.getChildren())
                        {
                            list1.add(ds.getValue(Booking.class));

                        }
                        adapterclass1 Adapterclass = new adapterclass1(patapp.this,list1);
                        //
                        //
                        //

                        recyclerView.setAdapter(Adapterclass);
                    }
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
                    Toast.makeText(patapp.this, databaseError.getMessage(),Toast.LENGTH_SHORT).show();

                }
            });
        }
        if (searchView != null)
        {
            searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
                @Override
                public boolean onQueryTextSubmit(String s) {
                    return false;
                }

                @Override
                public boolean onQueryTextChange(String s) {
                    search(s);
                    return true;
                }
            });
        }
    }

    private void search(String str)
    {
        ArrayList<Booking> myList = new ArrayList<>();
        for (Booking object : list1)
        {
            if (object.getPatname().toLowerCase().contains(str.toLowerCase()))
            {
                myList.add(object);
            }
        }
        adapterclass1 Adapterclass = new adapterclass1(patapp.this,myList);
        //
//
        //
        recyclerView.setAdapter(Adapterclass);
    }
}

在此处输入图像描述

标签: androidfirebasefirebase-realtime-database

解决方案


 databaseReference=FirebaseDatabase.getInstance().getReference("Bookings");
    final Query   findfeedback=databaseReference.orderByChild("email")
      .equalTo(Booking.getEmail);


                 findfeedback.addListenerForSingleValueEvent(new   
     ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot)     
                            {
                            for (DataSnapshot Bookings: dataSnapshot.getChildren())

                            {
                                 do something



                                 }

                            });

                        }

推荐阅读