Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.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 Firestore适配器,用于获取要在RecyclerView中显示的所有用户文档,但不是当前用户文档_Android_Firebase_Google Cloud Firestore_Android Recyclerview - Fatal编程技术网

Android Firestore适配器,用于获取要在RecyclerView中显示的所有用户文档,但不是当前用户文档

Android Firestore适配器,用于获取要在RecyclerView中显示的所有用户文档,但不是当前用户文档,android,firebase,google-cloud-firestore,android-recyclerview,Android,Firebase,Google Cloud Firestore,Android Recyclerview,我使用Cloud Firestore作为数据库,将所有用户保存为“用户”集合中的文档。我想将“用户”集合中的所有用户显示到myRecyclerView中,但当前正在使用应用程序的当前用户除外。我在互联网上搜索了很多,想找到一个解决方案,但没有找到。所以请帮我,伙计们,提前谢谢你们。我是初学者,所以真的需要你的帮助。再次感谢你 这是我的Firestore适配器: mQuery = FirebaseFirestore.getInstance().collection("users");

我使用Cloud Firestore作为数据库,将所有用户保存为“用户”集合中的文档。我想将“用户”集合中的所有用户显示到my
RecyclerView
中,但当前正在使用应用程序的当前用户除外。我在互联网上搜索了很多,想找到一个解决方案,但没有找到。所以请帮我,伙计们,提前谢谢你们。我是初学者,所以真的需要你的帮助。再次感谢你

这是我的Firestore适配器:

mQuery = FirebaseFirestore.getInstance().collection("users");
                    FirestoreRecyclerOptions<NearbyUserRecyclerModel> options = new FirestoreRecyclerOptions.Builder<NearbyUserRecyclerModel>()
                            .setQuery(mQuery,NearbyUserRecyclerModel.class)
                            .setLifecycleOwner(getActivity())
                            .build();

                    FirestoreRecyclerAdapter adapter = new FirestoreRecyclerAdapter<NearbyUserRecyclerModel,NearbyProfilesViewHolder>(options) {
                        @Override
                        protected void onBindViewHolder(@NonNull final NearbyProfilesViewHolder holder, int position, @NonNull final NearbyUserRecyclerModel model) {
                            holder.itemBuddyState.setText("0");

                            Glide.with(getActivity()).load(model.getThumb_pictures()).into(holder.itemImage);

                            holder.itemDisplayName.setText(model.getFirst_name());

                            holder.itemOnline.setVisibility(View.VISIBLE);

                            DocumentSnapshot snapshot = getSnapshots().getSnapshot(position);
                            if (snapshot.contains("online")){
                                Boolean onlineState = snapshot.getBoolean("online");

                                if (onlineState == true){
                                    holder.itemOnline.setVisibility(View.VISIBLE);
                                }
                                else {
                                    holder.itemOnline.setVisibility(View.INVISIBLE);
                                }
                            }

                            final String user_id = snapshot.getId();

                            mChatRequestCollection.document(current_user_id).collection("request_received")
                                    .document(user_id).get().addOnCompleteListener(getActivity(),
                                    new OnCompleteListener<DocumentSnapshot>() {
                                        @Override
                                        public void onComplete(@NonNull Task<DocumentSnapshot> task) {
                                            if (task.isSuccessful()){
                                                DocumentSnapshot document = task.getResult();
                                                if (document.contains("received_time")){

                                                    holder.itemBuddyState.setText("3");

                                                }else {
                                                    Log.d("REQUEST RECEIVED", "onComplete: received field doest exist, "+task.getException());
                                                }

                                            }else {
                                                Log.d("REQUEST RECEIVED", "onComplete: Document doesn't exist, "+ task.getException());
                                            }

                                        }
                                    });

                            mChatRequestCollection.document(current_user_id).collection("request_sent")
                                    .document(user_id).get().addOnCompleteListener(getActivity(),
                                    new OnCompleteListener<DocumentSnapshot>() {
                                        @Override
                                        public void onComplete(@NonNull Task<DocumentSnapshot> task) {
                                            if (task.isSuccessful()){
                                                DocumentSnapshot document = task.getResult();

                                                if (document.contains("sent_time")){

                                                    holder.itemBuddyState.setText("2");

                                                }else {
                                                    Log.d("REQUEST SENT", "onComplete: sent field doesn't exist, "+ task.getException());
                                                }

                                            }else {
                                                Log.d("REQUEST SENT", "onComplete: Document doesn't exist,");
                                            }
                                        }
                                    });

                            mChatHolderCollection.document(current_user_id+"/user_chats/"+user_id)
                                    .get().addOnCompleteListener(getActivity(),
                                    new OnCompleteListener<DocumentSnapshot>() {
                                        @Override
                                        public void onComplete(@NonNull Task<DocumentSnapshot> task) {
                                            if (task.isSuccessful()){
                                                DocumentSnapshot document = task.getResult();
                                                if (document.contains("timestamp")){

                                                    holder.itemBuddyState.setText("1");

                                                }else {
                                                    Log.d("CHAT_HOLDERDOC", "onComplete: timeStamp field doesn't exist, "+task.getException());
                                                }

                                            }else {
                                                Log.d("CHAT_HOLDERDOC", "onComplete: chat buddy doesn't exist, "+task.getException());
                                            }
                                        }
                                    });

                            holder.itemImage.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {

                                    userPopupDialog(model, user_id);
                                    //  popupIntent(user_id);
                                }
                            });

                            holder.itemButton.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(final View v) {

                                    String message = holder.itemEditText.getText().toString();

                                    if (holder.itemBuddyState.getText().equals("0")){

                                        if (!TextUtils.isEmpty(message)) {

                                            WriteBatch request_batch = mRootStore.batch();

                                            Map<String, Object> sentMap = new HashMap<>();
                                            sentMap.put("sent_time", FieldValue.serverTimestamp());
                                            sentMap.put("message", message);

                                            Map<String, Object> receivedMap = new HashMap<>();
                                            receivedMap.put("received_time", FieldValue.serverTimestamp());
                                            receivedMap.put("message", message);

                                            Map<String, Object> notificationMap = new HashMap<>();
                                            notificationMap.put("from", current_user_id);
                                            notificationMap.put("type", "request");

                                            DocumentReference sentRef = mRootStore.collection("chat_requests").document(current_user_id + "/request_sent/" + user_id);
                                            request_batch.set(sentRef, sentMap, SetOptions.merge());

                                            DocumentReference receivedRef = mRootStore.collection("chat_requests").document(user_id + "/request_received/" + current_user_id);
                                            request_batch.set(receivedRef, receivedMap, SetOptions.merge());

                                            DocumentReference notificationRef = mRootStore.collection("users/" + user_id + "/notifications").document();
                                            request_batch.set(notificationRef, notificationMap, SetOptions.merge());

                                            request_batch.commit().addOnCompleteListener(new OnCompleteListener<Void>() {
                                                @Override
                                                public void onComplete(@NonNull Task<Void> task) {
                                                    if (task.isSuccessful()) {

                                                        //------------Request Sent------------//
                                                        holder.itemEditText.setText("");

                                                        holder.itemBuddyState.setText("2");

                                                        Log.d("REQUEST_LOG", "onComplete: Request sent Successfully");
                                                        Log.d("REQUEST_LOG", "onComplete: Notification sent Successfully");

                                                        Snackbar.make(v, "Request sent Successfully", Snackbar.LENGTH_LONG).show();
                                                    } else {
                                                        Snackbar.make(v, "Failed Sending Request", Snackbar.LENGTH_LONG).show();

                                                        Log.d("REQUEST_LOG", "onComplete: Failed sending request" + task.getException());


                                                    }
                                                }
                                            });
                                        }

                                    }

                                    if (holder.itemBuddyState.getText().equals("3")){
                                        holder.itemEditText.setText("");
                                        Snackbar.make(v, "Request already received by user", Snackbar.LENGTH_LONG).show();
                                    }

                                    if (holder.itemBuddyState.getText().equals("2")){
                                        holder.itemEditText.setText("");
                                        Snackbar.make(v, "Request already sent", Snackbar.LENGTH_LONG).show();
                                    }

                                    if (holder.itemBuddyState.getText().equals("1")){
                                        holder.itemEditText.setText("");
                                        Snackbar.make(v,"User already chat buddy", Snackbar.LENGTH_LONG).show();
                                    }

                                }
                            });

                        }

                        @NonNull
                        @Override
                        public NearbyProfilesViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.nearby_profiles_recycler_items, parent, false);

                            final AppCompatImageButton button_send = view.findViewById(R.id.itemSendButton_id);
                            final AppCompatEditText editText_message =  view.findViewById(R.id.itemEditText_id);

                            Drawable drawable = getResources().getDrawable(R.drawable.ic_send_new);
                            drawable = DrawableCompat.wrap(drawable);
                            DrawableCompat.setTint(drawable, getResources().getColor(R.color.colorTabUnselected));
                            button_send.setImageDrawable(drawable);
                            button_send.setEnabled(false);

                            editText_message.addTextChangedListener(new TextWatcher() {
                                @Override
                                public void beforeTextChanged(CharSequence s, int start, int count, int after) {

                                }

                                @Override
                                public void onTextChanged(CharSequence s, int start, int before, int count) {
                                    String message = editText_message.getText().toString();

                                    if (TextUtils.isEmpty(message)){
                                        Drawable drawable = getResources().getDrawable(R.drawable.ic_send_new);
                                        drawable = DrawableCompat.wrap(drawable);
                                        DrawableCompat.setTint(drawable, getResources().getColor(R.color.colorTabUnselected));

                                        button_send.setImageDrawable(drawable);
                                        button_send.setEnabled(false);
                                    }
                                    else {
                                        Drawable drawable = getResources().getDrawable(R.drawable.ic_send_new);
                                        drawable = DrawableCompat.wrap(drawable);
                                        DrawableCompat.setTint(drawable, getResources().getColor(R.color.colorTabSelected));

                                        button_send.setImageDrawable(drawable);

                                        button_send.setEnabled(true);
                                    }

                                }

                                @Override
                                public void afterTextChanged(Editable s) {

                                }
                            });

                            return new NearbyProfilesViewHolder(view);
                        }
                    };

                    nearbyRecycler.setAdapter(adapter);
mQuery=FirebaseFirestore.getInstance().collection(“用户”);
FirestoreRecyclerOptions选项=新建FirestoreRecyclerOptions.Builder()
.setQuery(mQuery,NearbyUserRecyclerModel.class)
.setLifecycleOwner(getActivity())
.build();
FirestoreRecyclerAdapter=新FirestoreRecyclerAdapter(选项){
@凌驾
BindViewHolder上受保护的无效(@NonNull final NearbyProfilesViewHolder holder,int位置,@NonNull final NearbyUserRecyclerModel model){
holder.itemBuddyState.setText(“0”);
使用(getActivity())将(model.getThumb_pictures())加载到(holder.itemImage)中;
holder.itemDisplayName.setText(model.getFirst_name());
holder.itemOnline.setVisibility(View.VISIBLE);
DocumentSnapshot snapshot=getSnapshots().getSnapshot(位置);
if(snapshot.contains(“联机”)){
Boolean onlineState=snapshot.getBoolean(“online”);
如果(onlineState==true){
holder.itemOnline.setVisibility(View.VISIBLE);
}
否则{
holder.itemOnline.setVisibility(视图.不可见);
}
}
最后一个字符串user_id=snapshot.getId();
mChatRequestCollection.document(当前用户id).collection(“已收到请求”)
.document(用户id).get().addOnCompleteListener(getActivity(),
新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
DocumentSnapshot document=task.getResult();
if(文件包含(“收到时间”)){
holder.itemBuddyState.setText(“3”);
}否则{
Log.d(“已接收请求”、“onComplete:已接收字段不存在”+task.getException());
}
}否则{
Log.d(“已收到请求”、“onComplete:文档不存在”+task.getException());
}
}
});
mChatRequestCollection.document(当前用户id).collection(“请求已发送”)
.document(用户id).get().addOnCompleteListener(getActivity(),
新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
DocumentSnapshot document=task.getResult();
if(文件包含(“发送时间”)){
holder.itemBuddyState.setText(“2”);
}否则{
Log.d(“已发送请求”,“onComplete:已发送字段不存在,”+task.getException());
}
}否则{
Log.d(“请求已发送”,“完成:文档不存在”);
}
}
});
mChatHolderCollection.document(当前用户id+“/user\u chats/”+用户id)
.get().addOnCompleteListener(getActivity(),
新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
DocumentSnapshot document=task.getResult();
if(document.contains(“timestamp”)){
holder.itemBuddyState.setText(“1”);
}否则{
Log.d(“CHAT_HOLDERDOC”,“onComplete:timeStamp字段不存在,”+task.getException());
}
}否则{
Log.d(“CHAT_HOLDERDOC”,“onComplete:聊天伙伴不存在,”+task.getException());
}
 public void getUserData(){
    db.collection("users")
            .get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if (task.isSuccessful()) {
                for (QueryDocumentSnapshot document : task.getResult()) {
                    Log.d(TAG, document.getId() + " => " + document.getData());
                    if(document.getData().get("userID").equals(userID)){
                       // User user = (User)document.getData();
                       // Log.e(TAG, "onComplete: "+user.getUserName()+ user.getDescription() + user.isGender());
                        Map<String, Object> user = new HashMap<>();
                        user.put("name", document.getData().get("name"));
                        user.put("userID", document.getData().get("userID"));
                        user.put("email", document.getData().get("email"));
                        user.put("companyName",document.getData().get("companyName"));
                        user.put("officeAddress", document.getData().get("officeAddress"));
                        user.put("phoneNumber", document.getData().get("phoneNumber"));
                        user.put("gender",document.getData().get("gender"));
                        user.put("isProfileComplete",document.getData().get("isProfileComplete"));
                        user.put("profilePicUrl", document.getData().get("profilePicUrl"));
                        user.put("description", document.getData().get("description"));

                       /* if(document.getData().get("isProfileComplete")){
                            LoginActivity loginActivity = (LoginActivity)mContext;
                            loginActivity.navigateToHome();
                        }else{
                             LoginActivity loginActivity = (LoginActivity)mContext;
                            loginActivity.navigateToHome();
                        }*/
                       boolean check = (Boolean) document.getData().get("isProfileComplete");

                       if(check){
                           LoginActivity loginActivity = (LoginActivity)mContext;
                           loginActivity.navigateToHome();
                       }else{
                           LoginActivity loginActivity = (LoginActivity)mContext;
                           loginActivity.navigateToOnBoarding();
                       }

                        Log.e(TAG, "onComplete:GET DADA "+ user.get("isProfileComplete"));
                    }else{
                        Log.e(TAG, "onComplete:ID "+document.getData().get("userID") );
                        LoginActivity loginActivity = (LoginActivity)mContext;
                        loginActivity.navigateToOnBoarding();
                    }
                }
            } else {
                Log.w(TAG, "Error getting documents.", task.getException());
            }
        }
    });
}