我正在构建一个应用程序,要求用户注册其姓名,电子邮件,电话号码和血型。
下面是我的Firebase数据库结构:
如何添加按血型键显示的搜索栏或过滤器,以便用户可以根据血型进行过滤。如果我需要B阴性血液。我将使用下拉菜单查找需要搜索的Blood,并且在按下搜索按钮时,只会向我显示在Firebase数据库中注册为B阴性的Blood组,即根据密钥{{1 }}。
这是我用来上传用户详细信息的代码:
int size = Marshal.SizeOf(typeof(DANAE_LS_HEADER));
IntPtr ptr = Marshal.AllocHGlobal(size);
Marshal.Copy(levelData.bytes, 0, ptr, size);
DANAE_LS_HEADER o = (DANAE_LS_HEADER)Marshal.PtrToStructure(ptr,
typeof(DANAE_LS_HEADER));
我使用下面的代码检索数据
blood_group
对不起,如果我错过了任何事情。我将按您的要求添加。任何帮助都将不胜感激。预先感谢。
答案 0 :(得分:1)
要实现所需的功能,您需要执行如下查询:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersRef = rootRef.child("Users");
Query query = usersRef.orderByChild("blood_group").equalTo("Blood Group: " + newText);
其中newText
变量可以保存您想要的任何值,B positive
以及B negative
。
因此,每次创建搜索时,您都应该返回一个新查询。因此,据此,每次您要在新条件下进行过滤时,都需要:
基于新过滤器创建一个新查询:
Query query = usersRef.orderByChild("blood_group").equalTo("Blood Group: " + newText);
向此新创建的查询附加侦听器。
使用此新创建的查询的结果创建一个新的适配器,或使用notifydatasetchanged()
方法更新现有的适配器。