【发布时间】:2017-11-07 10:50:35
【问题描述】:
我正在使用 recylerviews 和 Firebase。我正在使用 FirebaseUI 将数据填充到我的 recyclerview 中。我想知道是否可以在我的片段中使用两个查询。应该执行的查询应该取决于数据库中是否存在节点。
数据库结构:
如果 address 子节点存在于 users 节点中,我的片段应该查询 users 节点。如果不是,它应该查询路由节点。这可能吗?
基本上我在这里通过查询获取所有标记:
Query keyQuery = FirebaseDatabase.getInstance().getReference(sharedPreferences.getString("school", null)).child("markers");
recyclerView = (RecyclerView) rootView.findViewById(R.id.markerRecyclerview);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
FirebaseRecyclerOptions<FirebaseMarker> options = new FirebaseRecyclerOptions.Builder<FirebaseMarker>()
.setQuery(keyQuery, FirebaseMarker.class)
.build();
在我的 onBindViewHolder 方法中,我在 recyclerview 中的每个项目上都有一个 onClick。单击该项目时,用户将转到一个新活动。在这个新活动中,用户可以按下一个按钮,该按钮将在 users/userId 节点下添加地址节点。按下那个按钮意味着用户已经选择了那个标记。所以我只想在 recyclerview 中显示标记信息,而不是在数据库中显示每个标记。
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(),MainActivity.class);
intent.putExtra("databaseKey", key);
startActivity(intent);
}
});
我在想:如果在 users 节点中插入 address 和 time 节点,我可以直接查询它,这样会更容易。
【问题讨论】:
-
那么,您想根据
address是否存在于当前用户的节点下,将不同的查询附加到FirebaseRecyclerAdapter?您能否提供一些示例代码来说明这种情况会发生在哪里?您应该能够使用不同的FirebaseRecyclerOptions实例初始化适配器。 -
我更新了我的帖子。有意义吗?
-
你认为有可能吗?
标签: android firebase firebase-realtime-database