如何从条件中从firebase获取列表数组?

时间:2019-07-25 03:56:02

标签: java android json firebase

我想在firebase中获取数据的listarray并将其放入我的listview中,但是我无法添加条件..

这是基地。

"Sendmail" : {
"-LkYHbH6FfiR-8ua7RQS" : {
  "deskripsi" : "coba",
  "perihal" : "coba",
  "username_from" : "rezkysaputra96",
  "username_to" : "hendra_admin"
},
"-LkbF2gEg6Q-cre8gSnd" : {
  "deskripsi" : "example2",
  "perihal" : "example2",
  "username_from" : "rezkysaputra96",
  "username_to" : "hendra_admin"
},
"-LkbF7YTY5yr7nMlAZss" : {
  "deskripsi" : "example3",
  "perihal" : "example3",
  "username_from" : "rezkysaputra96",
  "username_to" : "nurhamid123"
}

}

这是我的代码,这是从“ sendmail”中获取所有数据,但是我想从“ sendmail”中获取具有一定条件的数据。

 DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Sendmail");
    ListView listView = (ListView) view.findViewById(R.id.listview);
    arrayAdapter = new ArrayAdapter<String>( getActivity().getApplicationContext(), android.R.layout.simple_list_item_1,arrayList);
    listView.setAdapter(arrayAdapter);
    reference.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
            String value = dataSnapshot.getValue(Sendmail.class).toString();
            arrayList.add(value);
            arrayAdapter.notifyDataSetChanged();
        }

        @Override
        public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

        @Override
        public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

我如何从sendmail中获取列表数据,其中username_to = hendra_admin? 谢谢,我是firebase和java中的新手。

2 个答案:

答案 0 :(得分:0)

您可以使用Query类来过滤查询。有关处理数据列表的信息,请参见Firebase reference page。简而言之,您需要先使用orderBy..方法之一对查询进行排序,然后再对其进行过滤。在您的情况下,您需要使用orderByChild,因为您要基于子username_to过滤结果。然后使用equalTo过滤结果。这应该返回您想要的内容:

Query query = databaseReference.child("Sendmail").orderByChild("username_to").equalTo("hendra_admin");

答案 1 :(得分:0)

这也是我在此论坛上找到的解决方案。 谢谢 。 这是我的代码。

&

}