Search Bar Implementation with FirebaseAdapter

Viewed 24

I am trying to implement a Search bar menu item. I know how to do that using arrayadapter but confused about how to use it using FirebaseAdapter. Basically My code is tab layout with fragments.I have tried finding it on the internet but implementations are Either very vague or have been done using some other approach. my Fragment Code Looks like this:

public ChatsFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    mMainView = inflater.inflate(R.layout.fragment_chats, container, false);

   ...
    // Inflate the layout for this fragment
    return mMainView;
}


@Override
public void onStart() {
    super.onStart();


    if(mConvDatabase != null ) {
        Query conversationQuery = mConvDatabase.orderByChild("timestamp");

        FirebaseRecyclerAdapter<Conv, ConvViewHolder> firebaseConvAdapter = new FirebaseRecyclerAdapter<Conv, ConvViewHolder>(
                Conv.class,
                R.layout.users_single_layout,
                ConvViewHolder.class,
                conversationQuery
        ) {

            @Override
            protected void onDataChanged() {
                if(getItemCount() == 0){
                    text.setText("No Chats Available");
                }
                else{
                    text.setText("");
                }
            }


            @Override
            protected void populateViewHolder(final ConvViewHolder convViewHolder, final Conv conv, int i) {


                final String list_user_id = getRef(i).getKey();

                Query lastMessageQuery = mMessageDatabase.child(list_user_id).limitToLast(1);

                lastMessageQuery.addChildEventListener(new ChildEventListener() {
                    @Override
                    public void onChildAdded(DataSnapshot dataSnapshot, String s) {

                        String data = dataSnapshot.child("message").getValue().toString();
                        if (data.contains("firebase")) {
                            convViewHolder.setMessage("Storage", conv.isSeen());
                        } else {
                            convViewHolder.setMessage(data, conv.isSeen());
                        }

                    }

         ...

                });


    if(list_user_id != null) {
        mUsersDatabase.child(list_user_id).addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {


            final String userName = dataSnapshot.child("name").getValue().toString();
            String userThumb = dataSnapshot.child("thumb_image").getValue().toString();

            if (dataSnapshot.hasChild("online")) {

                String userOnline = dataSnapshot.child("online").getValue().toString();
                convViewHolder.setUserOnline(userOnline);

            }

            convViewHolder.setName(userName);
            convViewHolder.setUserImage(userThumb, getContext());


            convViewHolder.mView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {


                    Intent chatIntent = new Intent(getContext(), ChatActivity.class);
                    chatIntent.putExtra("user_id", list_user_id);
                    chatIntent.putExtra("user_name", userName);
                    startActivity(chatIntent);

                }
            });
        }




    @Override
    public void onCancelled(DatabaseError databaseError) {

        }
    });
}
            }
        };

        mConvList.setAdapter(firebaseConvAdapter);
    }
}

@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);
    inflater.inflate(R.menu.chats_menu,menu);
    MenuItem menuItem = menu.findItem(R.id.main_search_bar);
    SearchView searchView = (SearchView) menuItem.getActionView();
    searchView.setQueryHint("Type here to Search");
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            fire
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            return false;
        }
    });


}

public static class ConvViewHolder extends RecyclerView.ViewHolder {

    View mView;

    public ConvViewHolder(View itemView) {
        super(itemView);

        mView = itemView;

    }
  ...
  }

Can any one Please guide me How to Implement onQueryTextSubmit using FirebaseAdapter. Thanks.

0 Answers
Related