我正在创建一个应用程序,允许用户从特定位置的多个来源获取weatherdata。
我面临的问题是公关。现在,当用户使用我的应用程序时,他/她将看到firebase数据库中的所有位置对象。 (我打算通过firebase添加登录,此功能需要登录)
如何轻松存储用户在应用中选择的位置?
例如: 我想有一个位置列表Y,Z,X等。 (每个都有自己的数据集,由用户更新)
用户A想要查看位置Y和Z,用户B想要查看位置Y和X
如何存储指向用户A想要查看的位置的链接?然后能够在RecycleView中显示这些位置。
我希望如果用户C加入,他也可以添加自己的位置或从位置列表中选择。
答案 0 :(得分:1)
由于您已经在使用Firebase数据库,因此请将用户优先存储在该数据库中。您可以为用户创建单独的节点,并使用UID作为键(不是必需的)以及首选项或任何其他详细信息作为值来存储每个用户。像这样的东西
"root":{
"users":{
"UID1":{
"locations":{
"location1":true
"location2":true
}
}
"UID2":{
"locations":{
"location2":true
"location3":true
}
}
"UID3":{
"locations":{
"location4":true
"location5":true
}
}
}
}
然后,您可以使用
获取对每个用户的引用FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference userRef = FirebaseDatabase.getInstance()
.getReference("users/" + user.getUid() + "/locations");
您可以将此引用传递给FirebaseRecyclerAdapter以填充RecyclerView。但是,如果存储在每个列表项中的数据很小,比如只是一个名称而不是picture_url,那么只需存储在每个用户下面。这可能会复制数据,但会快速获取数据,这就是实时数据库应该做的事情。
答案 1 :(得分:0)
我看到它的唯一方法是实现登录功能。通过这种方式,您将知道当前用户是哪一个。
然后,当您拥有该功能时,您有两个选择: