如何使用Android条件显示Firebase数据库中的记录?

时间:2017-02-02 17:52:30

标签: android firebase firebase-realtime-database

我有以下Firebase数据库:

enter image description here

我想要做的就是显示属于特定用户的所有列表。在这种情况下,我想显示属于gmail @ gmail,com用户的列表aaa和列表bbb。有了这个查询:

databaseReference = FirebaseDatabase.getInstance().getReference();

Query query = databaseReference.child("Lists").orderByChild("ListName");
firebaseListAdapter = new FirebaseListAdapter<ListModel>(this, ListModel.class, android.R.layout.simple_list_item_1, query) {
        @Override
        protected void populateView(View v, ListModel slm, int position) {
            ((TextView)v.findViewById(android.R.id.text1)).setText(slm.getListName());
        }
    };

我实现显示所有列表,但我想只显示属于单个用户的列表,其值为true。我怎么能这样做?

提前致谢!

1 个答案:

答案 0 :(得分:1)

有两种方法可以实现此行为。

  1. Query query = DatabaseRef.getReference().child("Lists").orderByChild("Users").equals("gmail@gmail,com")
  2. 然后将ChildEventListener添加到此引用

    1. 在Firebase数据结构中,将电子邮件ID设为父级,并添加其下的所有子级,例如
    2. 解释          \的Gmail @ gmail的,COM                                          \ listName aaa                                          \ listName bbb

      您可以从以下参考中获取此结构中的数据:

      Query query = DatabaseRef.getInstance().child("Lists").child("gmail@gmail,com")

      然后使用ref对象添加ChildEventListener侦听器。

      希望这对你有用..

      ---编辑---- 试试这个:

      FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
      DatabaseReference ref = firebaseDatabase.getReference().child("Lists").orderByChild("Users").equalTo("gmail@gmail,com");
      
      ref.addChildEventListener(New ChildEventListener......);