用firebase在recyclerview上实现搜索的正确方法?

时间:2019-08-05 23:29:20

标签: android firebase firebase-realtime-database

我正在尝试在我的recyclerviewer上实现搜索功能,但遇到了一些麻烦。我已经创建了查询及其方法,但是搜索根本不返回任何内容。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

...
...
...

mDBListener = mDatabaseRef.addValueEventListener(new ValueEventListener() 
{
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            mUploads.clear();

            for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                Buildings upload = postSnapshot.getValue(Buildings.class);
                upload.setKey(postSnapshot.getKey());
                mUploads.add(upload);

            }

            mAdapter.notifyDataSetChanged();

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            Toast.makeText(MainActivity.this, databaseError.getMessage(), Toast.LENGTH_SHORT).show();

        }
    });


    mButtonSearch.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String searchText = mSearchView.getText().toString();
            firebaseUserSearch(searchText);
        }
    });

而且我在onCreate之外有这个

private void firebaseUserSearch(String searchText) {

    Query queryRef = mDatabaseRef.child("Buildings").orderByChild("name").startAt(searchText).endAt(searchText + "\uf8ff");
    queryRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            if (dataSnapshot.hasChildren()) {

                for (DataSnapshot postsSnapshot : dataSnapshot.getChildren()) {
                    final Buildings buildings = postsSnapshot.getValue(Buildings.class);
                }

            }
        }

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

        }
    });
}

这是实现它的正确方法吗?

0 个答案:

没有答案