android - 如何查询当前登录患者的数据以仅查看医生的预约
问题描述
目前,我可以列出医生为所有患者所做的所有预约。但我需要设置为当前登录系统的患者只能看到他的预约,只有他的名字。我如何查询它?我正在使用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);
}
}
解决方案
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
}
});
}
推荐阅读
- c# - 使用自定义值解析器映射时的解析器生命周期
- grep - GNU Parallel——如何理解“块大小”设置,并猜测将其设置为什么?
- ms-access - 更新到 Office 365 版本 1912 会中断 ODBC 连接(32 位)?
- c - 如何使用指针初始化和打印结构并将其提供给函数?
- java - 将 nvarchar 值“....”转换为数据类型 int 时转换失败
- typescript - 为什么即使显式设置,打字稿也会扩大属性的类型?
- python - 为什么我使用 https://github.com/amosbastian/fpl 访问 FPL API 的代码会失败?
- php - Stripe - 向用户收费并通过电子邮件发送发票
- canvas - Python 3.8 / Tkinter:画布中的项目不能从循环内绑定到函数
- javascript - 如何从对象数组中获取唯一的日期值