Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用FirebaseAdapter实现搜索栏_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Android 使用FirebaseAdapter实现搜索栏

Android 使用FirebaseAdapter实现搜索栏,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我正在尝试实现一个搜索栏菜单项。我知道如何使用arrayadapter做到这一点,但对如何使用FirebaseAdapter感到困惑。基本上,我的代码是带有片段的选项卡布局。我曾尝试在互联网上找到它,但实现要么非常模糊,要么是使用其他方法完成的。 我的片段代码如下所示: public ChatsFragment() { // Required empty public constructor } @Override public View onCreateView(LayoutInf

我正在尝试实现一个搜索栏菜单项。我知道如何使用arrayadapter做到这一点,但对如何使用FirebaseAdapter感到困惑。基本上,我的代码是带有片段的选项卡布局。我曾尝试在互联网上找到它,但实现要么非常模糊,要么是使用其他方法完成的。 我的片段代码如下所示:

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;

    }
  ...
  }
公共聊天片段(){
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
mMainView=充气机。充气(R.layout.fragment\u chats,容器,假);
...
//为该碎片膨胀布局
返回视图;
}
@凌驾
public void onStart(){
super.onStart();
如果(mConvDatabase!=null){
Query conversationQuery=mConvDatabase.orderByChild(“时间戳”);
FirebaseRecyclerAdapter firebaseConvAdapter=新的FirebaseRecyclerAdapter(
会议室,
R.layout.users\u single\u布局,
ConvViewHolder.class,
会话查询
) {
@凌驾
受保护的无效onDataChanged(){
如果(getItemCount()==0){
text.setText(“无可用聊天”);
}
否则{
text.setText(“”);
}
}
@凌驾
受保护的void populateViewHolder(最终ConvViewHolder,最终Conv Conv,int i){
最终字符串列表_user_id=getRef(i).getKey();
Query lastMessageQuery=mMessageDatabase.child(list\u user\u id).limitToLast(1);
lastMessageQuery.addChildEventListener(新的ChildEventListener(){
@凌驾
公共void onChildAdded(DataSnapshot DataSnapshot,字符串s){
字符串数据=dataSnapshot.child(“消息”).getValue().toString();
if(data.contains(“firebase”)){
setMessage(“存储”,conv.isSeen());
}否则{
setMessage(数据,conv.isSeen());
}
}
...
});
如果(列表用户id!=null){
mUsersDatabase.child(list\u user\u id).addValueEventListener(新的ValueEventListener()){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
最终字符串userName=dataSnapshot.child(“name”).getValue().toString();
字符串userThumb=dataSnapshot.child(“thumb_image”).getValue().toString();
if(dataSnapshot.hasChild(“在线”)){
字符串userOnline=dataSnapshot.child(“online”).getValue().toString();
convViewHolder.setUserOnline(userOnline);
}
convViewHolder.setName(用户名);
setUserImage(userThumb,getContext());
convViewHolder.mView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
Intent chatIntent=新的Intent(getContext(),ChatActivity.class);
chatIntent.putExtra(“用户id”,列表用户id);
chatIntent.putExtra(“用户名”,用户名);
星触觉;
}
});
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
}
}
};
mConvList.setAdapter(firebaseConvAdapter);
}
}
@凌驾
public void onCreateOptions菜单(@NonNull菜单,@NonNull菜单充气机){
super.onCreateOptions菜单(菜单,充气机);
充气机。充气(右菜单。聊天菜单,菜单);
MenuItem MenuItem=menu.findItem(R.id.main\u搜索栏);
SearchView SearchView=(SearchView)menuItem.getActionView();
setQueryHint(“在此处键入以进行搜索”);
searchView.setOnQueryTextListener(新的searchView.OnQueryTextListener(){
@凌驾
公共布尔值onQueryTextSubmit(字符串查询){
火
返回false;
}
@凌驾
公共布尔onQueryTextChange(字符串newText){
返回false;
}
});
}
公共静态类ConvViewHolder扩展了RecyclerView.ViewHolder{
视图视图;
公共视图持有者(视图项视图){
超级(项目视图);
mView=项目视图;
}
...
}
任何人都可以指导我如何使用FirebaseAdapter实现onQueryTextSubmit。 谢谢